หากต้องการใช้สูตรตัดข้อความแทนการใช้มาโคร ลองทำแบบนี้ครับ
1. B1, B2, C1, C2, D1, D2 คีย์ 7, 13, 21, 38, 66, 8 ตามลำดับ (เป็นตำแหน่งอักขระและจำนวนอักขระที่จะตัดจากข้อมูลดิบในแต่ละบรรทัดที่ได้ตามเงื่อนไข ตัวเลขชุดนี้จะเอาไปใช้สูตรข้อ 3 ครับ ผมดูด้วยโปรแกรม Notpad++ แล้วใช้ font พวก monospace หากทำงานกับไฟล์ที่ export จาก express บ่อยๆ ลองหามาใช้ดูครับ ฟรี)
Notepad++.png
2. หาเลข Invoice
2.1 F1 คีย์
=INDEX('DATA EXPRESS'!$A$1:$A$1000,LOOKUP(1,1/ISNUMBER(SEARCH($G$2,'DATA EXPRESS'!$A$1:$A$1000)),ROW('DATA EXPRESS'!$A$1:$A$1000)))
Enter
2.2 G2 คีย์ VW (อักษรนำ invoice ที่ไม่คีย์ลงไปในสูตร 2.1 เพราะเผื่อมีตัวย่ออื่นๆ ครับ)
2.3 F3 คีย์
=MID(F1,SEARCH(G2,F1),9)
Enter
3. หารายละเอียดใน Invoice ที่เข้าเงื่อนไข
3.1 H1 คีย์
=IF(ISNUMBER(--MID('DATA EXPRESS'!$A1,1,5)),IF(ISNUMBER(--MID('DATA EXPRESS'!$A1,B$1,B$2)),--MID('DATA EXPRESS'!$A1,B$1,B$2),TRIM(MID('DATA EXPRESS'!$A1,B$1,B$2))),"")
Enter -> คัดลอกไปถึง J1
3.2 K1 คีย์
=IF(OR(H1="",COUNTIFS(H$1:H1,H1,I$1:I1,I1,J$1:J1,J1)>1),"",ROWS(J$1:J1))
Enter
3.3 คัดลอกสูตร 3.1, 3.2 ลงล่างเผื่อเอาไว้เลยครับ
4. รวมรายการที่ไม่ซ้ำ
4.1 A4 คีย์
=IF(B4<>"",$F$3,"")
Enter
4.2 B4 คีย์
=IFERROR(INDEX(H$1:H$250,SMALL($K$1:$K$250,ROWS(B$4:B4))),"")
Enter -> คัดลอกไป D4 -> คัดลอกสูตร 4.1 และ 4.2 ลงล่างครับ
กรณีนี้จะใช้ได้เมื่อข้อมูลดิบที่เอามาวางมีเพียง Invoice เดียว แต่หากมีมากกว่านี้ก็ต้องปรับสูตรครับ
You do not have the required permissions to view the files attached to this post.