วิธีการแปลงสตริงของค่าที่คั่นด้วยเครื่องหมายจุลภาคเป็นอาร์เรย์


0

ฉันมีเซลล์หลายเซลล์ที่มีสตริงเช่นนี้:

"จอห์นคาร์ล่า, ปีเตอร์จอห์น, บ๊อบ, คริส, คาร์ล่าเอนเดรีย"

ฉันต้องการนับจำนวนผู้คนที่แตกต่างกัน (เช่นจำนวนค่าที่ไม่ซ้ำกัน) จำนวนสำหรับสตริงด้านบนจะเป็น 6 โปรดทราบว่าจำนวนชื่อทั้งหมดในสตริงสามารถแตกต่างกันมาก บางชื่อมีเพียงชื่อเดียวและชื่อที่ใหญ่ที่สุดมี 14 ชื่อ (ซึ่งบางชื่อสามารถทำซ้ำได้) บางชื่อมีช่องว่างในนั้น (เช่น "Peter Smith, Andrea, Carla Moore") แต่เราสามารถพึ่งพาเครื่องหมายจุลภาคเพื่อแยกพวกเขาออก

ฉันคิดว่าวิธีแก้ปัญหาคือการแปลงสตริงเป็นอาร์เรย์แล้วใช้การรวมกันของสูตร SUM, IF และ FREQUENCY ที่ฉันพบออนไลน์ ที่นี่ ใช้กับอาร์เรย์นั้น

อย่างไรก็ตามฉันไม่ทราบวิธีการแปลงสตริงให้เป็นอาร์เรย์


คุณลองอะไรไหม?
Toto

ฉันพบสิ่งนี้ที่นี่ ozgrid.com/forum/forum/help-forums/excel-general/... และพยายามใช้ แต่ไม่เข้าใจ จากนั้นพยายามที่จะแยกแต่ละสตริงโดยใช้ฟังก์ชั่น "ข้อความเป็นคอลัมน์" และหลังจากนั้นใช้บทช่วยสอนออนไลน์นั้นฉันพูดถึงการนับค่าในอาร์เรย์ แต่ฉันจะต้องป้อนสูตรด้วยตนเองในแต่ละแถวมิฉะนั้นอาร์เรย์จะไม่เปลี่ยนแปลง ไปยังแถวถัดไป
PrincessLilly

คำตอบ:


1

ลองฟังก์ชั่นที่ผู้ใช้กำหนดเองนี้:

Public Function PeopleKounter(s As String) As Long
    Dim DQ As String, c As Collection
    Set c = New Collection
    DQ = Chr(34)

    ary = Split(Replace(s, DQ, ""), ",")

    On Error Resume Next
        For Each a In ary
            c.Add a, CStr(a)
        Next a
    On Error GoTo 0

    PeopleKounter = c.Count
End Function

enter image description here


มันใช้งานได้ดีมากขอบคุณ!
PrincessLilly

1
ตอนนี้ฉันได้เพิ่ม "Application.Volatile" ที่ด้านบนเพื่อให้ฟังก์ชันนี้รีเฟรชโดยอัตโนมัติเมื่อมีการคำนวณเวิร์กชีตใหม่
PrincessLilly

@ Princess Princess ความคิดที่ดี .....................................
Gary's Student

1

สูตรนี้จะย้ำ "คำ" และนับเฉพาะที่ไม่ซ้ำกัน

=SUMPRODUCT(--(ISERROR(FIND(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($1:$17)-1)*99+1,99)),TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),1,(ROW($1:$17)-1)*99+1))))))

มันทำซ้ำมันจะเปรียบเทียบกับกระแสกับสิ่งที่มาก่อนด้วย FIND(). และข้อผิดพลาดจะถูกส่งกลับหากไม่พบและจะถูกนับ

enter image description here


การใช้ฉลาดของ SUMPRODUCT()
Gary's Student

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