แสดงค่า Data (คอล์ลัม B) ที่น้อยที่สุด เฉพาะค่าที่มากกว่า 0 เท่านั้น

ไม่ระบุชื่อ
2024-06-03T10:33:27+00:00

กรอกสูตรในคอล์ลัม C (Most rated) และ D (Most rated) เพื่อจัดลำดับค่า Data (คอล์ลัม B) ที่น้อยที่สุด เฉพาะค่าที่มากกว่า 0 เท่านั้น ดังนี้

  • คอล์ลัม C (Most rated) จัดลำดับค่า Data (คอล์ลัม B) ที่น้อยที่สุด เฉพาะค่าที่มากกว่า 0 เท่านั้น (เหมือนภาพด้านล่าง)
  • คอล์ลัม D (Most rated) ให้เลือกค่า Data (คอล์ลัม B) ที่น้อยที่สุด เฉพาะค่าที่มากกว่า 0 เท่านั้น คือ No. 3 (เหมือนภาพด้านล่าง)

Microsoft 365 และ Office | Excel | อื่นๆ | Windows
Microsoft 365 และ Office | Excel | อื่นๆ | Windows

ตระกูลของซอฟต์แวร์สเปรดชีต Microsoft ที่มีเครื่องมือสําหรับการวิเคราะห์ ทําแผนภูมิ และสื่อสารข้อมูล

คำถามที่ถูกล็อก คำถามนี้ถูกโยกย้ายจากชุมชนฝ่ายสนับสนุนของ Microsoft คุณสามารถลงคะแนนว่ามีประโยชน์หรือไม่ แต่ไม่สามารถเพิ่มความคิดเห็นหรือตอบกลับหรือติดตามคำถามได้

0 ความคิดเห็น ไม่มีข้อคิดเห็น

1 คำตอบ

เรียงลำดับตาม: มีประโยชน์มากที่สุด
  1. ไม่ระบุชื่อ
    2024-06-03T13:38:17+00:00

    เป็นผลให้อาจมีข้อผิดพลาดทางไวยากรณ์หรือถ้อยคําแปลก ๆ

    สวัสดี CHP SDB,

    ยินดีต้อนรับสู่ Microsoft Community

    นี่คือ William จากทีมสนับสนุนด้านเทคนิคของ Microsoft Community

    ก่อนอื่นฉันต้องบอกคุณว่าฉันได้ทําการเปลี่ยนแปลงบางอย่างกับข้อมูลตัวอย่างของคุณเพื่อความสะดวกโดยเฉพาะอย่างยิ่งพูดว่าลบแถวแรกในภาพตัวอย่างของคุณว่างเปล่าด้วยข้อมูล เมื่อคุณพยายามคัดลอกสูตรที่ฉันให้ไว้โปรดลบหรือแก้ไขตามข้อมูลจริงของคุณ

    figure

    ลองสูตรเหล่านี้:

    สําหรับคอลัมน์ C (อันดับสูงสุด) เพื่อจัดอันดับค่าข้อมูลที่น้อยที่สุดที่มากกว่าศูนย์จากคอลัมน์ B: =IF(B2>0, RANK.EQ(B2, B$2:B$6, 1)-1, "") สูตรนี้จะจัดอันดับค่าจากน้อยไปมาก (จากมากไปน้อย) ก็ต่อเมื่อค่าเหล่านั้นมีค่ามากกว่าศูนย์ คัดลอกสูตรนี้ลงจาก C2 เป็น C5

    อ้างอิง: RANK. ฝ่ายสนับสนุนของ Microsoft

    บางทีคุณอาจสังเกตเห็นว่าผลลัพธ์ดูแตกต่างจากตัวอย่างของคุณมาก นั่นเป็นเพราะฉันได้เพิ่มแถวข้อมูลที่ซ้ํากันในหมายเลข 5 ในกรณีที่คุณต้องการสถานการณ์นี้ "อันดับ" เดียวกันใน ฟังก์ชัน RANK EQ หากนี่ไม่ใช่เอฟเฟกต์ที่คุณต้องการคุณสามารถโพสต์กลับและฉันจะให้คําแนะนําในการปรับเปลี่ยนสูตร

    และสําหรับคอลัมน์ D ฉันควรยืนยันว่าอาจมีข้อผิดพลาดนิพจน์ในคําถามของคุณหรือไม่ ในคําที่เฉพาะเจาะจงคุณพูดว่า "เลือกค่าข้อมูลที่น้อยที่สุด" ในขณะที่ในภาพของคุณผลลัพธ์คือ 3 แทนที่จะเป็น 20 เช่นเลือก ค่าจากคอลัมน์ A สําหรับแถวที่มีค่าน้อยที่สุดจากคอลัมน์ B เท่านั้น: =XLOOKUP(MIN(C:C),C:C,A:A,"NOT FOUND",0,-1) สูตรนี้ส่งกลับค่าจากคอลัมน์ A สําหรับแถวที่มีค่าน้อยที่สุดจากคอลัมน์ B เท่านั้น เพียงแค่ใช้ฟังก์ชัน XLOOKUP คุณจะพบความรู้เพิ่มเติมเกี่ยวกับ:

    ฟังก์ชัน XLOOKUP - ฝ่ายสนับสนุนของ Microsoft

    อย่างไรก็ตามฉันยังพิจารณาด้วยว่าคุณจะพบว่าเมื่อคุณมีข้อมูลที่ซ้ํากันในคอลัมน์ B ฟังก์ชัน XLOOKUP จะส่งกลับเฉพาะค่าด้านหน้าสุดหรือตัวแปร on the search_mode ตามค่าสุดท้ายที่คุณเลือกซึ่งก็คือ -1 ในสูตรของฉัน อย่างที่คุณเห็นคอลัมน์ D เต็มไปด้วยเอาต์พุต 5 หากคุณต้องการส่งคืนข้อมูลที่ซ้ํากันทั้งหมดคุณจะต้องใช้มาโครหรือการเขียนโปรแกรม VBA ดังกล่าว โปรดทราบว่าการเขียนโปรแกรม VBA เป็นเทคนิคการเขียนโปรแกรมขั้นสูงบางประเภท ฉันไม่แน่ใจว่าคุณคุ้นเคยกับมันมากหรือไม่ แต่ฉันจะให้รหัสแก่คุณและคุณสามารถคัดลอกและใช้งานได้โดยตรง

    Sub ListSmallestNonZeroInCell()
    
        Dim ws As Worksheet
    
        Set ws = ActiveSheet
    
        Dim rng As Range
    
        Dim cell As Range
    
        Dim minValue As Double
    
        Dim strResult As String
    
        Dim resultRow As Integer
    
        ' Define the range for the Data column
    
        Set rng = ws.Range("B2:B6")
    
        ' Initialize minimum value to a large number
    
        minValue = Application.WorksheetFunction.Large(rng, 1)
    
        ' Find the smallest non-zero value in the Data column
    
        For Each cell In rng
    
            If cell.Value > 0 And cell.Value < minValue Then
    
                minValue = cell.Value
    
            End If
    
        Next cell
    
        ' Create a string with all 'No.' values that match the smallest non-zero value
    
        For Each cell In rng
    
            If cell.Value = minValue Then
    
                strResult = strResult & cell.Offset(0, -1).Value & ", "
    
            End If
    
        Next cell
    
        ' Remove the trailing comma and space
    
        strResult = Left(strResult, Len(strResult) - 2)
    
        ' Define the row where the result should be displayed
    
        resultRow = 2 ' This is for cell E2
    
        ' Input the result into cell E2
    
        ws.Cells(resultRow, 5).Value = strResult
    
    End Sub
    

    เมื่อต้องการใช้แมโครนี้:

    1. กด Alt + F11 เพื่อเปิดตัวแก้ไข VBA
    2. ไปที่ แทรกโมดูล > เพื่อสร้างโมดูลใหม่
    3. คัดลอกและวางโค้ดมาโครลงในโมดูล
    4. กด F5 หรือไปที่ Run > Run Sub/UserForm เพื่อดําเนินการแมโคร

    แมโครป้อนค่า 'ไม่' ที่สอดคล้องกับค่า 'ข้อมูล' ที่ไม่ใช่ศูนย์ที่เล็กที่สุดในคอลัมน์ B ลงในเซลล์ E2

    อย่าลืมปรับช่วงของเซลล์ในโค้ดตามข้อมูลจริงของคุณ

    หากมีความไม่แน่นอนเกิดขึ้นในภายหลังโปรดอย่าลังเลที่จะโพสต์กลับ

    หากคําตอบของฉันแก้ไขปัญหาของคุณได้สําเร็จโปรดคลิก ใช่ ภายใต้ การตอบกลับของฉัน

    ขอแสดงความนับถือ

    William.Y | LinkedIn ผู้เชี่ยวชาญด้านการสนับสนุนชุมชนของ Microsoft

    คำตอบนี้มีประโยชน์หรือไม่

    0 ความคิดเห็น ไม่มีข้อคิดเห็น