Excel - วิธีตรวจสอบว่ามีค่า / สตริงจำนวนหนึ่งแถวหรือไม่ในแถว


0

ฉันมีรายการ A ของสตริงและฉันต้องการดูว่ามีกี่แถวของแต่ละสตริงที่แสดงในช่วง B ข้อมูลของฉันมีลักษณะดังนี้:

รายการ A:

AAA

BBB

CCC

Range B:

1 aaa --- ---

2 bbb ccc bbb

3 aaa --- ---

ผลลัพธ์ที่ฉันต้องการคือในรายการ A สำหรับ "aaa" มันจะบอกฉัน 2 สำหรับ "bbb" 1 และสำหรับ "ccc" 1. พยายามทำสิ่งนี้ด้วยสูตรอาร์เรย์ด้านล่าง แต่ดูเหมือนจะไม่เป็น การทำงาน:

=SUM(IF(COUNTIF(Range B,List A($A1)>0,1,0))

คำตอบ:


1

สมมติว่ารายการสตริงของคุณอยู่ใน 1 เซลล์ต่อแถว - คุณสามารถใช้สูตรอาร์เรย์ได้

เราจะบอกว่ารายการที่อยู่ในA1:A3และช่วง B B1:B3อยู่ใน หากต้องการนับสำหรับแต่ละรายการในรายการ A คุณสามารถใช้ -

=COUNT(IF(FIND(A1,$B$1:$B$3)>0,1,0))

แต่นี้เป็นสูตรอาร์เรย์ดังนั้นเมื่อคุณพิมพ์คุณเสร็จสิ้นโดยการกดปุ่มCtrl+ Shft+ และคุณจะเห็นวงเล็บปีกกาEntr{}

ป้อนคำอธิบายรูปภาพที่นี่


หาก Range B อยู่ในหลายเซลล์คุณสามารถใช้บางอย่างเช่น -

=COUNTIF($B$6:$D$8,A1)

อาจมีอีกวิธีด้วยสูตร แต่ฉันไม่สามารถคิดได้ คุณสามารถสร้างคอลัมน์ผู้ช่วยสำหรับสิ่งที่คุณกำลังพยายามหาโดยใช้

=IF(ISERROR(MATCH($A$1,$B6:$D6)),0,1)

ลากลงแถวจากนั้นรวมคอลัมน์นั้น แต่นั่นเป็นคอลัมน์ตัวช่วยมากมายถ้าคุณต้องการนับมันสำหรับแต่ละค่า ..


หากคุณเปิดให้ VBA UDF ที่คล้ายกับสิ่งนี้จะใช้งานได้ -

Public Function countrow(rng As Range, str As String) As Integer
Dim a As Integer
a = 0
    For Each Row In rng
        For Each c In Row
            If InStr(1, str, c) Then
                a = a + 1
                Exit For
            End If
        Next
    Next
    countrow = a
End Function

ชอบ -

=countrow(A6:C9,A1)

ใช่ช่วง B ประกอบด้วยหลายคอลัมน์ และสิ่งที่ฉันอยากรู้ไม่ใช่จำนวนทั้งหมดของค่า / สตริงที่แน่นอน (ซึ่งเป็นสูตร countif อย่างง่ายที่จะให้ฉัน) แต่ในจำนวนแถวที่ค่า / สตริงเกิดขึ้น
F Bert

@FBert ดูการแก้ไขของฉันแม้ว่าโซลูชันเหล่านี้อาจไม่เหมาะกับคุณ
Raystafarian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.