Page 1 of 1

สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Fri Feb 01, 2019 3:46 pm
by worakiat.b
สอบถามสูตร ดึงข้อมูลจาก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

เช่น Sheet1 มีข้อมูลมาให้แบบนี้
B1
กทม
กทม
กทม
ราชบุรี
ภูเก็ต
ภูเก็ต
โคราช

และ Sheet2 ดึงข้อมูลมากจาก Sheet 1 (โดยการลากเมาส์ลงมา) [Sheet2 เป็น Sheet ที่ถูกออกแบบและตกแต่งมาแล้วครับ เลยใช้เฉพาะดึงข้อมูลอย่างเดียวครับ]
A1
กทม
กทม
กทม

ราชบุรี

ภูเก็ต
ภูเก็ต

โคราช

ประมาณนี้อ่ะครับ ปล.ยกตัวอย่างเป็นชื่อจังหวัดนะครับ แต่ชื่อจริงๆ มีหลาย 1,000 ชื่อครับ

ขอบคุณมากๆครับ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Fri Feb 01, 2019 3:56 pm
by puriwutpokin
ทำไฟล์ตัวอย่างมา แนบมาด้วยครับ ตามกฏข้อ4 ครับจะได้ทดสอบได้สะดวก และตรงความต้องการครับ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Fri Feb 01, 2019 4:10 pm
by worakiat.b
puriwutpokin wrote: Fri Feb 01, 2019 3:56 pm ทำไฟล์ตัวอย่างมา แนบมาด้วยครับ ตามกฏข้อ4 ครับจะได้ทดสอบได้สะดวก และตรงความต้องการครับ
ขอโทษครับ อัพแล้วครับผม

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Fri Feb 01, 2019 5:14 pm
by Bo_ry
Sheet ผลลัพท์
A1 พิมพ์ จังหวัด

A2 ลากลง
=IF(COUNTIF(A$1:A1,A1)=COUNTIF(Data!$D$2:$D$20,A1),"",INDEX(Data!D:D,AGGREGATE(15,6,ROW(Data!$D$2:$D$19)/(1/(1/FREQUENCY(MATCH(Data!$D$2:$D$20&"",Data!$D$2:$D$20&"",),ROW(Data!$D$1:$D$20)))+1>=COLUMN(INDIRECT("a:h"))),ROWS(A$2:A2)))&"")

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Fri Feb 01, 2019 9:23 pm
by Supachok
ช่องว่างโคราชจะไม่มี 2 ช่องครับ

=IF(COUNTIF(A$1:A20,A20)=COUNTIF(Data!$D$2:$D$21,A20)

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Sat Feb 02, 2019 8:08 am
by snasui
:D แถมอีกตัวอย่างสูตรตามด้านล่างครับ

ที่ชีต ผลลัพธ์
  1. ที่ A3 คีย์
    =Data!D2
    Enter
  2. ที่ A4 คีย์
    =IFERROR(IF(COUNTIF(Data!$D$2:$D$16,A3)=COUNTIF(A$3:A3,A3),"",INDEX(Data!$D$2:$D$16,ROWS($A$4:A4)-COUNTIF(A$3:A3,"")+1)),"")
    Enter > Copy ลงด้านล่าง

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Sat Feb 02, 2019 6:53 pm
by Bo_ry
สูตรอาจารย์ง่ายจัง :cp:

เอาใหม่ :D
A1 พิมพ์ จังหวัด

A2
=IF(COUNTIF(A$1:A1,A1)=COUNTIF(Data!$D$2:$D$90,A1),"",INDEX(Data!$D$2:$D$90,ROWS(A$1:A1)-COUNTIF(A$1:A1,A1)))&""

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Mon Feb 04, 2019 9:01 am
by worakiat.b
ขอบคุณทุกๆท่านมากครับ ฮ่าๆๆ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Tue Feb 05, 2019 2:27 pm
by worakiat.b
snasui wrote: Sat Feb 02, 2019 8:08 am :D แถมอีกตัวอย่างสูตรตามด้านล่างครับ

ที่ชีต ผลลัพธ์
  1. ที่ A3 คีย์
    =Data!D2
    Enter
  2. ที่ A4 คีย์
    =IFERROR(IF(COUNTIF(Data!$D$2:$D$16,A3)=COUNTIF(A$3:A3,A3),"",INDEX(Data!$D$2:$D$16,ROWS($A$4:A4)-COUNTIF(A$3:A3,"")+1)),"")
    Enter > Copy ลงด้านล่าง

ขอบคุณมากครับอาจารย์ ผมมีกระทู้ใหม่ รบกวนอาจารย์ช่วยดูให้หน่อยนะครับ
https://www.snasui.com/viewtopic.php?f=3&t=14832

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Tue Feb 05, 2019 8:00 pm
by snasui
:D คำถามต่อเนื่องกันให้ถามในกระทู้เดิมครับ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Wed Feb 06, 2019 12:49 pm
by worakiat.b
snasui wrote: Tue Feb 05, 2019 8:00 pm :D คำถามต่อเนื่องกันให้ถามในกระทู้เดิมครับ
ต้องขอโทษด้วยครับอาจารย์ เดี๋ยวผมถามต่อจากกระทู้เดิมเลยครับ ขอบคุณมากครับ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Wed Feb 06, 2019 12:49 pm
by worakiat.b
ขออนุญาตถามต่อครับ

คือตอนนี้ผมมี Sheet อยู่ 5 Sheet ครับ
1. Sheet Formula :arrow:
2. Sheet _FirstStep :arrow:
3. Sheet total :arrow:
4. Sheet Data1 :arrow:
5. Sheet ต้องการผลลัพทธ์แบบนี้

Sheet ที่จะแสดงผลข้อมูลจริงๆ คือ total ครับ

แต่ผมขออนุญาต อธิบายวิธีที่ผมทำก่อนนะครับ น่าจะหลายขึ้นตอนมากครับ คืออยากได้ ให้ลากลงมาแล้วได้ผลลัพทธ์เลยครับ

1. ผมต้องไปดึงข้อมูลมา Import ใส่ใน Sheet Data1 และ Sheet _First Step ครับ
2. ผม Import ข้อมูลเสร็จเรียบร้อยแล้ว ผมก็ไปทำต่อที่ Sheet total ครับ ซึ่งผมทำแบบฟอร์มไว้แล้ว ด้วยการลากข้อมูลลงมา
แต่มันแค่ไปดึงข้อมูลมาโชว์เฉยๆครับ (ซึ่งข้อมูลจะเรียง ตามชื่อ Account นะครับ)
3. ลากข้อมูลลงมาเสร็จแล้ว ผมก็ต้อง Insert copied cells จำนวน 2 คอลัมน์ครับ (Insert copied cells ตรงที่ชื่อ Account ไม่เหมือนกันครับ เพื่อให้เกิดช่องว่าง และผมจะ Copy สูตรมาใส่อีกบรรทัดครับ ดังนั้นจะว่าง 1 คอลัมน์ครับ)
4. จากนั้นผมก็ ไป Copy สูตร จาก Sheet Formula มาวางเหนือคอลัมน์ที่มีข้อมูล ต้องทำที่ละ Account นะครับ เพราะว่าต้องใช้การ Replace all (ผมใช้สูตรแบบนี้ครับ ตรงหัวข้อ Find what : $X$10 และ Replace with : $E$ใส่แถวของ Account เช่น $E$12)
ในส่วนที่ดึงข้อมูลมา ผมกำหนดให้ไปดึงข้อมูลมาจาก Sheet _FirstStep ครับ ดึงจากชื่อ Account ล่าสุดมาโชว์ครับ (เหมือนกับว่าต้องเปรียบเทียบกันว่าเข้าไปบริการ Account นั้นๆ ก่อนหน้านี้เมื่อวันที่เท่าไรครับ)

ปล. ถ้าไม่เข้าใจในสิ่งที่ผมพูด ลองดูจาก Sheet "ต้องการผลลัพธ์แบบนี้ ก็ได้ครับ" เพราะผมอาจจะสื่อสารไม่ค่อยเก่งครับ
ขอบคุณล่วงหน้ามากๆครับ ผมต้องการแนวทางการลดขั้นตอนที่ผมทำอยู่ครับ ขอบคุณมากครับ :D :) :thup: :cp:

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Sun Feb 17, 2019 9:14 am
by snasui
:o ขออภัยที่มาตอบช้าเนื่องจากเข้าใจว่าได้คำตอบจากกระทู้ที่ไปเปิดใหม่แล้ว

จากตัวอย่างไฟล์ที่แนบมา ตัวอย่างสูตรตามด้านล่างครับ
  1. ที่ N6, O6 และ P6 คีย์ Acc, Count และ StartLine ตามลำดับ เพื่อเป็นคำลัมน์ช่วย
  2. ที่ N7 คีย์
    =IFERROR(INDEX(Data1!$D$2:$D$26,SMALL(IF(FREQUENCY(MATCH(Data1!$D$2:$D$26,Data1!$D$2:$D$26,0),ROW(Data1!$D$2:$D$26)-ROW(Data1!$D$2)+1),ROW(Data1!$D$2:$D$26)-ROW(Data1!$D$2)+1),ROWS(N$7:N7))),"")
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  3. ที่ O7 คีย์
    =IF(N7="","",COUNTIF(Data1!$D$2:$D$26,N7)+2)
    Enter > Copy ลงด้านล่าง ต้องการให้แสดงกี่บรรทัดก็เปลี่ยน +2 เป็น + ด้วยค่านั้น ๆ การ +2 หมายถึงให้แสดงค่าเดิมเพิ่มมา 2 บรรทัด
  4. ที่ P7 คีย์
    =IF(O7="","",SUM(O$7:O7)-O7+1)
    Enter > Copy ลงด้านล่าง
  5. ที่ K8 คีย์
    =IF(SUMIF($N$7:$N$17,K7,$O$7:$O$17)-1=COUNTIF($K$7:K7,LOOKUP(2,1/(K$7:K7<>""),$K$7:K7)),"",IF(ROWS(K$8:K8)>SUM($O:$O),"",LOOKUP(ROWS(K$8:K8),$P$7:$P$17,$N$7:$N$17)))
    Enter > Copy ลงด้านล่าง
  6. ที่ L8 คีย์
    =IF(OR(A8<>"",K8=""),"",SMALL(IF(Data1!$D$2:$D$26=K8,ROW(Data1!$D$2:$D$26)-ROW(Data1!$D$2)+1),COUNTIF(K$8:K8,K8)-1))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  7. ที่ A8 คีย์
    =IF(K8="","",IF(COUNTIF(K$8:K8,K8)=1,"Start",""))
    Enter > Copy ลงด้านล่าง
  8. ที่ B8 คีย์
    =IF($A8<>"",INDEX(_FirstStep!B$1:B$990,MATCH($K8,_FirstStep!$A$1:$A$990,0)),IF($L8<>"",INDEX(Data1!A$2:A$26,$L8),""))
    Enter > Copy ลงด้านล่าง > Copy ไปใช้กับคอลัมน์อื่นทั้งหมดยกเว้นคอลัมน์ C
  9. ที่ C8 คีย์
    =IF($A8<>"",INDEX(_FirstStep!C$1:C$990,MATCH($K8,_FirstStep!$A$1:$A$990,0)),IF($L8<>"",INDEX(Data1!L$2:L$26,$L8),""))
    Enter > Copy ลงด้านล่าง

!
Note: Ctrl+Shift+Enter
เป็นการสร้างสูตร Array โดยสามารถเลือกดำเนินการตามข้อ 1 หรือ 2 ด้านล่าง
  1. กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น
    Ctrl และ Shift พร้อมกันค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
  2. กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน
    จากนั้นกดแป้น Ctrl และ Shift พร้อมกันค้างไว้แล้วตามด้วย Enter เพื่อสร้างเป็นสูตร Array
  3. หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)}
    ปีกกานี้ไม่สามารถคีย์เข้าไปเอง จะต้องมาด้วยการกดแป้น Ctrl+Shift+Enter เท่านั้น
    ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
  4. การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Mon Mar 04, 2019 5:11 pm
by worakiat.b
snasui wrote: Sun Feb 17, 2019 9:14 am :o ขออภัยที่มาตอบช้าเนื่องจากเข้าใจว่าได้คำตอบจากกระทู้ที่ไปเปิดใหม่แล้ว

จากตัวอย่างไฟล์ที่แนบมา ตัวอย่างสูตรตามด้านล่างครับ
  1. ที่ N6, O6 และ P6 คีย์ Acc, Count และ StartLine ตามลำดับ เพื่อเป็นคำลัมน์ช่วย
  2. ที่ N7 คีย์
    =IFERROR(INDEX(Data1!$D$2:$D$26,SMALL(IF(FREQUENCY(MATCH(Data1!$D$2:$D$26,Data1!$D$2:$D$26,0),ROW(Data1!$D$2:$D$26)-ROW(Data1!$D$2)+1),ROW(Data1!$D$2:$D$26)-ROW(Data1!$D$2)+1),ROWS(N$7:N7))),"")
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  3. ที่ O7 คีย์
    =IF(N7="","",COUNTIF(Data1!$D$2:$D$26,N7)+2)
    Enter > Copy ลงด้านล่าง ต้องการให้แสดงกี่บรรทัดก็เปลี่ยน +2 เป็น + ด้วยค่านั้น ๆ การ +2 หมายถึงให้แสดงค่าเดิมเพิ่มมา 2 บรรทัด
  4. ที่ P7 คีย์
    =IF(O7="","",SUM(O$7:O7)-O7+1)
    Enter > Copy ลงด้านล่าง
  5. ที่ K8 คีย์
    =IF(SUMIF($N$7:$N$17,K7,$O$7:$O$17)-1=COUNTIF($K$7:K7,LOOKUP(2,1/(K$7:K7<>""),$K$7:K7)),"",IF(ROWS(K$8:K8)>SUM($O:$O),"",LOOKUP(ROWS(K$8:K8),$P$7:$P$17,$N$7:$N$17)))
    Enter > Copy ลงด้านล่าง
  6. ที่ L8 คีย์
    =IF(OR(A8<>"",K8=""),"",SMALL(IF(Data1!$D$2:$D$26=K8,ROW(Data1!$D$2:$D$26)-ROW(Data1!$D$2)+1),COUNTIF(K$8:K8,K8)-1))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  7. ที่ A8 คีย์
    =IF(K8="","",IF(COUNTIF(K$8:K8,K8)=1,"Start",""))
    Enter > Copy ลงด้านล่าง
  8. ที่ B8 คีย์
    =IF($A8<>"",INDEX(_FirstStep!B$1:B$990,MATCH($K8,_FirstStep!$A$1:$A$990,0)),IF($L8<>"",INDEX(Data1!A$2:A$26,$L8),""))
    Enter > Copy ลงด้านล่าง > Copy ไปใช้กับคอลัมน์อื่นทั้งหมดยกเว้นคอลัมน์ C
  9. ที่ C8 คีย์
    =IF($A8<>"",INDEX(_FirstStep!C$1:C$990,MATCH($K8,_FirstStep!$A$1:$A$990,0)),IF($L8<>"",INDEX(Data1!L$2:L$26,$L8),""))
    Enter > Copy ลงด้านล่าง

!
Note: Ctrl+Shift+Enter
เป็นการสร้างสูตร Array โดยสามารถเลือกดำเนินการตามข้อ 1 หรือ 2 ด้านล่าง
  1. กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น
    Ctrl และ Shift พร้อมกันค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
  2. กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน
    จากนั้นกดแป้น Ctrl และ Shift พร้อมกันค้างไว้แล้วตามด้วย Enter เพื่อสร้างเป็นสูตร Array
  3. หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)}
    ปีกกานี้ไม่สามารถคีย์เข้าไปเอง จะต้องมาด้วยการกดแป้น Ctrl+Shift+Enter เท่านั้น
    ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
  4. การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง

ขอบคุณมากครับอาจารย์ ผมลองทำตามแล้ว ยังไม่ได้เลยครับ ขอโทษด้วยครับพอดีผมไม่ค่อยเก่งเรื่อง Excel ครับ T_T

ไฟล์แนบคือผลลัพธ์ที่ทำตามคำแนะนำของอาจารย์ล่าสุดครับ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Mon Mar 04, 2019 8:18 pm
by snasui
:D คีย์แล้วต้อง Copy ลงด้านล่างด้วย ตอนนี้คีย์แค่เซลล์เดียวเท่านั้น เป็นปกติที่จะไม่ได้คำตอบ ลองทบทวนคำตอบใหม่ เมื่อทำแล้วติดปัญหาใดค่อยถามกันต่อครับ

Re: สอบถามสูตร ดึงข้อมูลจากอีก Sheet1 มาแสดงผล Sheet2 และให้เว้นบรรทัดอัตโนมัติ เมื่อเจอชื่อที่ไม่ซ้ำกันหน่อยครับ

Posted: Tue Mar 05, 2019 11:00 am
by worakiat.b
snasui wrote: Mon Mar 04, 2019 8:18 pm :D คีย์แล้วต้อง Copy ลงด้านล่างด้วย ตอนนี้คีย์แค่เซลล์เดียวเท่านั้น เป็นปกติที่จะไม่ได้คำตอบ ลองทบทวนคำตอบใหม่ เมื่อทำแล้วติดปัญหาใดค่อยถามกันต่อครับ
ขอบคุณมากๆครับอาจารย์ ทำได้แล้วครับ :D