Page 1 of 1

ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Thu Nov 13, 2025 9:46 pm
by ajsudkedt
จากชีต "input"
หากต้องการนำข้อมูลแต่ละบรรทัด
มาจัดในแนวตั้งที่ชีต "output"
โดยนำข้อมูลมา 4 อย่างตามนี้
1. เลข 3 หลัก ในคอลัมน์ A
2. ชื่อ ในคอลัมน์ B
3. รหัสวิชา ในคอลัมน์ C:Y (นำมาเฉพาะรหัสวิชาที่แตกต่าง หากมีแตกต่างมากกว่า 1 ให้นำขึ้นบรรทัดใหม่)
4. เลข ชั้น/ห้อง หรือ ม.รวม
ดั่งตัวอย่างในชีต "output"
ต้องใช้สูตรอย่างไรตามไฟล์ "ask" ที่แนบ
ขอบคุณครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Nov 14, 2025 10:32 am
by snasui
:D ตัวอย่างสูตรในชีต output เซลล์ A1 โดย Copilot ครับ

Code: Select all

=LET(
  d, input!A2:Z161,
  r, ROWS(d),
  c, COLUMNS(d)-2,
  t, MAKEARRAY(r*c, 4, LAMBDA(i,j,
    LET(
      ri, INT((i-1)/c)+1,
      ci, MOD(i-1,c)+1,
      raw, INDEX(d,ri,ci+2),
      s, IF(LEFT(raw,1)="ท", TEXTBEFORE(raw," "), ""),
      rm, IF(s="", "", TEXTBEFORE(TRIM(TEXTAFTER(raw," "))," ")),
      CHOOSE(j, INDEX(d,ri,1), INDEX(d,ri,2), s, rm)
    )
  )),
  f, FILTER(t, (INDEX(t,,3)<>"")*(INDEX(t,,4)<>"")*ISNUMBER(--LEFT(INDEX(t,,4),1))),
  keys, BYROW(f, LAMBDA(row, TEXTJOIN("|",,INDEX(row,{1,3})))),
  uKeys, UNIQUE(keys),
  pos, XMATCH(uKeys, keys),
  HSTACK(
    INDEX(f,pos,1),
    INDEX(f,pos,2),
    INDEX(f,pos,3),
    INDEX(f,pos,4)
  )
)
Enter

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Nov 14, 2025 11:23 am
by ajsudkedt
snasui wrote: Fri Nov 14, 2025 10:32 am :D ตัวอย่างสูตรในชีต output เซลล์ A1 โดย Copilot ครับ

Code: Select all

=LET(
  d, input!A2:Z161,
  r, ROWS(d),
  c, COLUMNS(d)-2,
  t, MAKEARRAY(r*c, 4, LAMBDA(i,j,
    LET(
      ri, INT((i-1)/c)+1,
      ci, MOD(i-1,c)+1,
      raw, INDEX(d,ri,ci+2),
      s, IF(LEFT(raw,1)="ท", TEXTBEFORE(raw," "), ""),
      rm, IF(s="", "", TEXTBEFORE(TRIM(TEXTAFTER(raw," "))," ")),
      CHOOSE(j, INDEX(d,ri,1), INDEX(d,ri,2), s, rm)
    )
  )),
  f, FILTER(t, (INDEX(t,,3)<>"")*(INDEX(t,,4)<>"")*ISNUMBER(--LEFT(INDEX(t,,4),1))),
  keys, BYROW(f, LAMBDA(row, TEXTJOIN("|",,INDEX(row,{1,3})))),
  uKeys, UNIQUE(keys),
  pos, XMATCH(uKeys, keys),
  HSTACK(
    INDEX(f,pos,1),
    INDEX(f,pos,2),
    INDEX(f,pos,3),
    INDEX(f,pos,4)
  )
)
Enter
สูตรที่ให้มา ได้ผลดั่งต้องการ
แต่จำนวนข้อมูลมาไม่ครบ
มาแค่ 21 บรรทัด
หากต้องการให้ข้อมูลมาทั้งหมด
ต้องปรับแก้โค้ดสูตรอย่างไร
ตามไฟล์ "ask2" ที่แนบครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Nov 14, 2025 1:37 pm
by snasui
:D ตัวอย่างการปรับสูตรเดิมครับ

Code: Select all

=LET(
  d, input!A2:Z161,
  r, ROWS(d),
  c, COLUMNS(d)-2,
  t, MAKEARRAY(r*c, 4, LAMBDA(i,j,
    LET(
      ri, INT((i-1)/c)+1,
      ci, MOD(i-1,c)+1,
      raw, INDEX(d,ri,ci+2),
      s, IF(ISNUMBER(--MID(raw,2,5)), TEXTBEFORE(raw," "), ""),
      rm, IF(s="", "", TEXTBEFORE(TRIM(TEXTAFTER(raw," "))," ")),
      CHOOSE(j, INDEX(d,ri,1), INDEX(d,ri,2), s, rm)
    )
  )),
  f, FILTER(t, (INDEX(t,,3)<>"")*(INDEX(t,,4)<>"")*ISNUMBER(--LEFT(INDEX(t,,4),1))),
  keys, BYROW(f, LAMBDA(row, TEXTJOIN("|",,INDEX(row,{1,2,3})))),
  uKeys, UNIQUE(keys),
  pos, XMATCH(uKeys, keys),
  INDEX(f, pos, {1,2,3,4})
)

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Nov 14, 2025 2:44 pm
by ajsudkedt
snasui wrote: Fri Nov 14, 2025 1:37 pm :D ตัวอย่างการปรับสูตรเดิมครับ

Code: Select all

=LET(
  d, input!A2:Z161,
  r, ROWS(d),
  c, COLUMNS(d)-2,
  t, MAKEARRAY(r*c, 4, LAMBDA(i,j,
    LET(
      ri, INT((i-1)/c)+1,
      ci, MOD(i-1,c)+1,
      raw, INDEX(d,ri,ci+2),
      s, IF(ISNUMBER(--MID(raw,2,5)), TEXTBEFORE(raw," "), ""),
      rm, IF(s="", "", TEXTBEFORE(TRIM(TEXTAFTER(raw," "))," ")),
      CHOOSE(j, INDEX(d,ri,1), INDEX(d,ri,2), s, rm)
    )
  )),
  f, FILTER(t, (INDEX(t,,3)<>"")*(INDEX(t,,4)<>"")*ISNUMBER(--LEFT(INDEX(t,,4),1))),
  keys, BYROW(f, LAMBDA(row, TEXTJOIN("|",,INDEX(row,{1,2,3})))),
  uKeys, UNIQUE(keys),
  pos, XMATCH(uKeys, keys),
  INDEX(f, pos, {1,2,3,4})
)
สูตรที่ให้มา ได้ผลดั่งที่ต้องการเลยครับ
กราบขอบพระคุณมาก ครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Nov 14, 2025 3:33 pm
by ajsudkedt
สูตรที่ให้มา ข้อมูล ยังแสดงไม่ครบ
ตามภาพและไฟล์แนบ
ต้องปรับโค้ดสูตรอย่างไรครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Nov 14, 2025 7:34 pm
by snasui
:D ตัวอย่างการปรับสูตรครับ

Code: Select all

=LET(
  d, input!A2:Z161,
  r, ROWS(d),
  c, COLUMNS(d)-2,
  t, MAKEARRAY(r*c, 4, LAMBDA(i,j,
    LET(
      ri, INT((i-1)/c)+1,
      ci, MOD(i-1,c)+1,
      raw, TRIM(INDEX(d,ri,ci+2)),
      s, IF(ISNUMBER(--RIGHT(TEXTBEFORE(raw," "),5)), TEXTBEFORE(raw," "), ""),
      rm, IF(s="", "", TEXTBEFORE(TRIM(TEXTAFTER(raw," "))," ")),
      CHOOSE(j, INDEX(d,ri,1), INDEX(d,ri,2), s, rm)
    )
  )),
  f, FILTER(
        t,
        (INDEX(t,,3)<>"") *
        (INDEX(t,,4)<>"") *
        ISNUMBER(--RIGHT(INDEX(t,,3),5)) *
        ISNUMBER(--MID(INDEX(t,,3),5,1))
     ),
  keys, BYROW(f, LAMBDA(row, TEXTJOIN("|",,INDEX(row,{1,2,3})))),
  uKeys, UNIQUE(keys),
  pos, XMATCH(uKeys, keys),
  INDEX(f, pos, {1,2,3,4})
)

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Sat Nov 15, 2025 7:41 pm
by ajsudkedt
สูตรที่ให้มา ได้ข้อมูลครบครับ
กราบขอบพระคุณมาก ครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Thu Dec 18, 2025 2:25 pm
by ajsudkedt
จากสูตรในไฟล์ที่แนบ
ยังมีบางชื่อและรหัสวิชาที่ "ไม่มาแสดงที่ชีต output"
เช่น ชื่อ มนทกานต์ รหัสวิชา ส33203
ซึ่งในชีต "input" มีรหัสนี้ แต่ "output" ไม่มี
ต้องปรับแก้สูตรอย่างไร ตามไฟล์แนบ ครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Fri Dec 19, 2025 6:42 am
by snasui
:D ตัวอย่างการปรับสูตรที่เซลล์ A2 ครับ

Code: Select all

=LET(
 d, format!A2:NN190,
 r, ROWS(d),
 c, COLUMNS(d)-2,
 t,
 MAKEARRAY(r*c,4,
  LAMBDA(i,j,
   LET(
    ri, INT((i-1)/c)+1,
    ci, MOD(i-1,c)+1,
    raw, TRIM(INDEX(d,ri,ci+2)),
    head, IFERROR(TEXTBEFORE(raw," "),""),
    s,
    IF(
     AND(head<>"", LEN(head)>=5, ISNUMBER(--RIGHT(head,5))),
     head,
     ""
    ),
    rm,
    IF(
     s<>"",
     IFERROR(TEXTAFTER(raw," "), ""),
     ""
    ),
    CHOOSE(
     j,
     INDEX(d,ri,1),
     INDEX(d,ri,2),
     s,
     rm
    )
   )
  )
 ),
 f,
 FILTER(
  t,
  (INDEX(t,,3)<>"")* (INDEX(t,,4)<>"")
 ),
 IFERROR(
  LET(
   keys, BYROW(f,LAMBDA(row,TEXTJOIN("|",,INDEX(row,{1,2,3})))),
   uKeys, UNIQUE(keys),
   pos, XMATCH(uKeys,keys),
   INDEX(f,pos,{1,2,3,4})
  ),
  ""
 )
)
สูตรเดิมคลุมข้อมูลไม่ครบ

สูตรนี้ปรับให้ครอบคลุมแล้ว แต่ข้อมูลต้นทางไม่มีความสม่ำเสมอ ข้อมูลแบบเดียวกันวรรคบ้าง ไม่วรรคบ้าง ทำให้แยกออกเป็นคอลัมน์ลำบาก สูตรด้านบนช่วยได้ระดับหนึ่ง ต้องเอาไป Clean ต่อครับ

Re: ขอสูตรจัดข้อมูลแบบมีเงื่อนไข

Posted: Sat Dec 20, 2025 4:40 am
by ajsudkedt
snasui wrote: Fri Dec 19, 2025 6:42 am :D ตัวอย่างการปรับสูตรที่เซลล์ A2 ครับ

Code: Select all

=LET(
 d, format!A2:NN190,
 r, ROWS(d),
 c, COLUMNS(d)-2,
 t,
 MAKEARRAY(r*c,4,
  LAMBDA(i,j,
   LET(
    ri, INT((i-1)/c)+1,
    ci, MOD(i-1,c)+1,
    raw, TRIM(INDEX(d,ri,ci+2)),
    head, IFERROR(TEXTBEFORE(raw," "),""),
    s,
    IF(
     AND(head<>"", LEN(head)>=5, ISNUMBER(--RIGHT(head,5))),
     head,
     ""
    ),
    rm,
    IF(
     s<>"",
     IFERROR(TEXTAFTER(raw," "), ""),
     ""
    ),
    CHOOSE(
     j,
     INDEX(d,ri,1),
     INDEX(d,ri,2),
     s,
     rm
    )
   )
  )
 ),
 f,
 FILTER(
  t,
  (INDEX(t,,3)<>"")* (INDEX(t,,4)<>"")
 ),
 IFERROR(
  LET(
   keys, BYROW(f,LAMBDA(row,TEXTJOIN("|",,INDEX(row,{1,2,3})))),
   uKeys, UNIQUE(keys),
   pos, XMATCH(uKeys,keys),
   INDEX(f,pos,{1,2,3,4})
  ),
  ""
 )
)
สูตรเดิมคลุมข้อมูลไม่ครบ

สูตรนี้ปรับให้ครอบคลุมแล้ว แต่ข้อมูลต้นทางไม่มีความสม่ำเสมอ ข้อมูลแบบเดียวกันวรรคบ้าง ไม่วรรคบ้าง ทำให้แยกออกเป็นคอลัมน์ลำบาก สูตรด้านบนช่วยได้ระดับหนึ่ง ต้องเอาไป Clean ต่อครับ
กราบขอบพระคุณมากครับ
สูตรที่ให้มาได้ผลดั่งที่ต้องการเลยครับ