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
สูตรที่ให้มา ได้ข้อมูลครบครับ
กราบขอบพระคุณมาก ครับ