Excel - วิธีนับจำนวนอักขระที่เกิดขึ้นในสตริงในช่วงของความยาวตัวแปร


0

พื้นหลัง: ฉันกำลังวิเคราะห์ความถี่ที่หัวข้อปรากฏในชุดอีเมล แต่ละหัวข้อมีอักขระที่เกี่ยวข้อง (a-z) และอีเมลแต่ละฉบับได้รับการกำหนดหลายตัวอักษรเหล่านี้เมื่อใดก็ตามที่มีบางส่วนของหัวข้อปรากฏขึ้น:

Basic structure of the data

ในตัวอย่างข้างต้น MAIL2 แตะหัวข้อ 'c' 2 ครั้งและ 'd' 2 ครั้ง

คำถาม: ฉันจะสรุปเหตุการณ์เหล่านี้ได้อย่างไร สำหรับแต่ละอีเมลแยกกัน หากจำนวนแถวและตัวอักษรที่สอดคล้องกับอีเมลแต่ละอันไม่สามารถคาดเดาได้ (ระหว่าง 1 ถึง ~ 12)

ฉันกำลังคิดเกี่ยวกับการจัดรูปแบบผลลัพธ์เช่นนี้: enter image description here

ฉันสามารถให้ป้ายกำกับอีเมลที่สอดคล้องกันในแต่ละแถว ฉันเดาว่าฉันจะมีการนับจำนวนเซลล์สีเทาแต่ละครั้งของตัวละครตัวหนึ่ง (เช่น 'a' สำหรับ C2 ) พบในสตริงเรียงลำดับบางส่วนจากเซลล์ทั้งหมดที่อยู่ในแถวที่ทำเครื่องหมายเป็น MAIL1 หรือไม่ แต่ฉันจะขอบคุณสำหรับวิธีการแก้ปัญหาใด ๆ ที่แยกผลลัพธ์สำหรับแต่ละอีเมล


หากการป้อนข้อมูลของคุณได้รับการแก้ไขฉันขอแนะนำให้คุณพัฒนาโซลูชัน VBA หากการป้อนข้อมูลของคุณมีความยืดหยุ่นให้ออกแบบหนึ่งที่คล้อยตามตารางสาระสำคัญเช่นข้อมูลสำหรับแต่ละรายการในแถวและมีเพียงตัวเดียวต่อเซลล์หรือตัวละครทั้งหมดในเซลล์เดียว (จากนั้นแยกด้วย power pivot)
Ron Rosenfeld

คำตอบ:


0

โปรดทราบว่าจะต้องป้อนสูตรในคำตอบนี้ในเซลล์ C2จากนั้นคัดลอก / กรอกตามต้องการ


แก้ไข: ปรากฎว่ามี คือ วิธีในการแก้ปัญหาโดยไม่ใช้เซลล์ตัวช่วย:

=
SUMPRODUCT(
  ($B2=$A$2:INDEX($A:$A,MATCH("*",$B:$B,-1)))*
  (LEN($B$2:INDEX($B:$B,MATCH("*",$B:$B,-1)))-LEN(SUBSTITUTE($B$2:INDEX($B:$B,MATCH("*",$B:$B,-1)),C$1,"")))
)

คำอธิบาย: $A$2:INDEX($A:$A,MATCH("*",$B:$B,-1)) คำและที่เกี่ยวข้อง B รุ่นคอลัมน์ใช้เพื่อปรับช่วงแหล่งที่มาแบบไดนามิก สูตรเทียบเท่ากับเวอร์ชันคงที่ต่อไปนี้ที่ใช้กับสเปรดชีตตัวอย่าง:

=
SUMPRODUCT(
  ($B2=$A$2:$A$11)*
  (LEN($B$2:$B$11)-LEN(SUBSTITUTE($B$2:$B$11,C$1,"")))
)



ทางออกที่ง่ายที่สุดจะเป็นสูตรต่อไปนี้:

=COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*")

น่าเสียดายที่กรณีนี้ล้มเหลวสำหรับกรณีพิเศษที่มีมากกว่าหนึ่งตัวอักษรใด ๆ ในเซลล์ ตัวอย่างเช่น 'f' ในเซลล์ B11 จะถูกนับเพียงครั้งเดียว


เรา สามารถ แก้ปัญหานี้อย่างน่าเกลียดและถูก จำกัด ด้วยการสรุปจำนวนครั้งที่เกิดขึ้นหลายครั้ง ตัวอย่างเช่นข้อมูลต่อไปนี้สามารถใช้ได้กับตัวละครใด ๆ สูงสุดไม่เกินสามรายการ:

=COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*")
+COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*"&C$1&"*")
+COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*"&C$1&"*"&C$1&"*")

อีกวิธีหนึ่งคือเราสามารถใช้เซลล์ผู้ช่วย สูตรต่อไปนี้คัดลอก / เติมลงในทุกเซลล์ในช่วง C2:H11 ทำแค่นั้น:

=
IF(
  ""<>$A2,
  LEN($B2)-LEN(SUBSTITUTE($B2,C$1,"")),
  SUMIF($A:$A,$B2,C:C)
)

คำอธิบายสั้น ๆ :

""<>$A2 เลือกว่าเซลล์เป็นเซลล์ตัวช่วย (จริง) หรือสีเทาเซลล์ผลลัพธ์ (เท็จ)

LEN($B2)-LEN(SUBSTITUTE($B2,C$1,"")) คำนวณจำนวนการเกิดขึ้นของตัวอักษรที่เหมาะสมในเซลล์ที่เหมาะสม

SUMIF($A:$A,$B2,C:C) รวมจำนวนนับสำหรับจดหมายที่เหมาะสม

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