Page 1 of 1

มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Wed Jul 12, 2023 11:16 am
by hanuaggie61
ไฟล์แนบจะเป็นบันทึกเวลาเข้า-ออกของรถส่งของที่ส่งงานในแต่ละวัน
โดยออกแบบไว้เป้นบรรทัดละข้อมูลตามปกติ
ใน 1 เที่ยว จะเป็น รับงาน 2 จุด / ส่งงาน 2 จุด / เอางานกลับมาคืน 2 จุด (ซึ่งบางเที่ยงอาจไม่ได้ครบทุกจุดก็ได้)

แต่ลูกค้าต้องการให้สรุปข้อมูลตามแบบเขา ซึ่งมันเป็น 2 บรรทัด
ทางผมจึงทำสรุปข้อมูลที่ต้องการนำไปแสดงผลไว้เป็นคอลัมภ์ตั้งแต่ AP เป็นต้นไป
เพื่อจะเอาไว้ดึงไปใส่ในตารางรูปแบบ 2 บรรทัดของเขา (ในที่นี้ คือ ชีทที่ชื่อ OT)

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

Sheet OT ที่เป็นคำถาม
เบื้องต้นผมจะทำสูตรดึงของวันที่ 1 เป้นแบบให้เสร็จก่อน
แล้วค่อยมาแก้สูตรเป็น Indirect โดยเอาค่าชื่อชีทจากวันที่ที่คนกรอกข้อมูลต้องการจะให้ดึง

ได้ทำสูตรดึง = ตามปกติไปยังเซลล์ที่ต้องการของวันที่ 1 ไว้ โดยปัญหาที่เจอคือ
ด้วยความที่แปลงจากข้อมูล 1 บรรทัดมาเป็น 2 บรรทัด
พอจะ Copy ชุดข้อมูลแรก(2บรรทัด) เพื่อเอาสูตรไปใช้ในต่อ(ไม่ต้องพิมพ์ใหม่)
ซึ่งพอไปวางมันจะเป็นบรรทัดที่ 3 ทำให้สูตรลำดับแถวจากเดิมที่ควรจะเรียงรันอัตโนมัติ 1-2-3-4
มันเลยกลายเป็น 1-3-5-7 (ด้วยระบบของ Excel เอง ผมเข้าใจ)
1. ทีนี้ถ้าผมหากจะ Copy ทั้ง 2 บรรทัดไปวางโดยที่สูตรลำดับแถวไม่เปลี่ยนมีวิธีไหมครับ
เพราะวางแบบค่า ก็จะเป็นค่า 0
วางแบบสูตร ก็จะเป็นแบบข้างบน (รันแถวตามจริง)

2. นอกจากวิธีที่ผมทำ คำสั่ง Filter มันสามารถทำให้ดึงข้อมูล 1 แถว แต่มาแสดงทีละ 2 แถวได้ไหมครับ (ไม่น่าจะได้)
หรือมีวิธีอื่นอีกไหมครับ
Microsoft Office 365 ครับ
ด้วยทำแบบไว้แค่ 10 เที่ยว/วัน แต่หากข้อมูลเยอะกว่านี้จะทำสูตรลำบาก
(รวมถึงตอนแก้หากคนกรอกข้อมูลอยากได้รายละเอียดอื่นๆอีก เพราะในไฟล์ยังไม่ได้ใส่สูตร Indirect เข้าไป แค่ออกแบบรอไว้)


ได้มีแนบตัวอย่างไฟล์ให้เพื่อช่วยดูด้วยนะครับ

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Wed Jul 12, 2023 2:14 pm
by norkaz
...

Sheet OT
ลบข้อมูล L3:Lxx ออกไป

L3
=LET(x,L3:L999,IF(SEQUENCE(ROWS(x))>COUNTA('01'!AQ5:AQ999)*2,"",INDEX('01'!AQ5:AR999,INT(SEQUENCE(ROWS(x),,2)/2),MOD(SEQUENCE(ROWS(x),,2),2)+1)))

**สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ**

Norkaz

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Wed Jul 12, 2023 3:53 pm
by hanuaggie61
norkaz wrote: Wed Jul 12, 2023 2:14 pm ...

Sheet OT
ลบข้อมูล L3:Lxx ออกไป

L3
=LET(x,L3:L999,IF(SEQUENCE(ROWS(x))>COUNTA('01'!AQ5:AQ999)*2,"",INDEX('01'!AQ5:AR999,INT(SEQUENCE(ROWS(x),,2)/2),MOD(SEQUENCE(ROWS(x),,2),2)+1)))

**สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ**

Norkaz
เยี่ยมเลยครับ ขอบคุณมากๆครับ
ต้องศึกษาเรื่อง Let เพิ่มเติมซะแล้ว แต่ก่อนไม่ได้เห็นว่าจะเอาไปใช้ได้แบบไหน
OT3.jpg
ขอสอบถามเพิ่มเติมครับ
1. กรณีนี้ถ้าผมทำข้อมูล Cell M3 ให้ไปอยู่ในชีทตารางรายวันได้
คอลัมภ์ M ทั้งหมด ผมก็ตามคล้ายๆ ตัวอย่างคอลัมภ์ L ได้เลยใช่ไหมครับ

2. ผมออกแบบให้ดึงตามวันที่ที่เตรียมไว้ที่ Cell A3 สูตรดังกล่าว ตรงส่วนที่อ้างอิงชื่อ Sheet ผมสามารถเพิ่มคำสั่ง Indirect เข้าไปได้ไหมครับ เพื่อให้สูตรเปลี่ยนชีทดึงตามวันที่ที่กรอกไป

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Wed Jul 12, 2023 4:03 pm
by norkaz
...

ลองนำไปปรับดูก่อนครับ ติดตรงไหน ส่งไฟล์ + คำถาม + ตัวอย่างคำตอบ
ส่วนไหนที่ไม่เกี่ยวข้องกับ คำถาม หรือ เกี่ยวข้องกับโจทย์ ให้ตัดทิ้งไป

**สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ**

Norkaz

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Wed Jul 12, 2023 6:10 pm
by hanuaggie61
ครับผมเดี่ยวไปลองปรับใช้ดูนะครับ

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Sat Jul 15, 2023 4:41 pm
by hanuaggie61
norkaz wrote: Wed Jul 12, 2023 4:03 pm ...

ลองนำไปปรับดูก่อนครับ ติดตรงไหน ส่งไฟล์ + คำถาม + ตัวอย่างคำตอบ
ส่วนไหนที่ไม่เกี่ยวข้องกับ คำถาม หรือ เกี่ยวข้องกับโจทย์ ให้ตัดทิ้งไป

**สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ**

Norkaz


ได้ลองปรับตารางข้อมูลและปรับสูตรใหม่เพื่อให้ชีท OT ดึงเวลามาได้เลยทั้งเข้าและออก สามารถทำได้แล้ว
แต่ทีนี้ถ้าผมต้องการดึงข้อมูลเฉพาะรายการที่มี OT มาแสดงเท่านั้น (คอลัมภ์ AN ของชีท 01)
แต่ผมพยายามหาวิธีดึงมาแสดงแล้ว ยังทำไม่ได้(ไม่ค่อยคุ้นเรื่องการแยก 2 บรรทัด)
ผมแนวทางในการดึงหน่อยได้ไหมครับ

ตัวอย่างตามไฟล์แนบครับ
OT1.jpg
OT2.jpg

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Sat Jul 15, 2023 4:59 pm
by norkaz
...


จากไฟล์ Excel ที่ท่านเจ้าของคำถาม สอบถามมา

1. คอลัมน์ใดที่ยังไม่ถูกต้อง

2. แล้วที่ถูกต้อง ตัวอย่าง คำตอบ ควรเป็นเท่าใด

**สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ**

Norkaz

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Sat Jul 15, 2023 5:57 pm
by hanuaggie61
จากไฟล์ Excel ที่ท่านเจ้าของคำถาม สอบถามมา

1. คอลัมน์ใดที่ยังไม่ถูกต้อง
2. แล้วที่ถูกต้อง ตัวอย่าง คำตอบ ควรเป็นเท่าใด

Sheet OT นอกจากดึงข้อมูล 1 บรรทัดมาแสดง 2 บรรทัดแล้ว
ผมต้องการดึงเฉพาะแถวที่มี OT มาแสดง (แถวที่ไม่มี OT ไม่ต้องดึงมาแสดงครับ)
OT4.jpg

โดยผลลัพธ์ที่ต้องการใน Sheet OT จะเป็นตามรูปนี้ครับ (ซึ่งมีแค่ 2 รายการ)
OT5.jpg

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Sat Jul 15, 2023 8:31 pm
by norkaz
...

ต้องขออภัยที่ผมถามไม่ละเอียด ผมขอถามใหม่นะครับ

จากไฟล์ Excel ที่ท่านเจ้าของคำถาม สอบถามมา

1. คอลัมน์ใดที่ยังไม่ถูกต้อง

2. แล้วที่ถูกต้อง ตัวอย่าง คำตอบ ควรเป็นเท่าใด

**สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ**

Norkaz

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Sun Jul 16, 2023 1:13 am
by norkaz
...

ไม่ค่อยเข้าใจที่สอบถามมา ว่าต้องการให้เขียนสูตร ที่คอลัมน์ใด

สีที่ระบายมาในไฟล์ เยอะไปหมด ไม่แน่ใจว่าต้อง โฟกัส เล็งไปที่ใด

คราวก่อนเขียนไป ที่คอลัมน์ L

ขอเขียนที่เดิมครับ ....


L3:Mxx
ลบทุกอย่างออกไปก่อน

L3

=IFERROR(LET(r,L3:L999,n,SEQUENCE(ROWS(r),,2)/2,d,INDIRECT("'"&A3&"'!AQ5:AT999"),e,INDIRECT("'"&A3&"'!AN5:AN999"),HSTACK(INDEX(FILTER(d,e="OT"),INT(n),IF(MOD(SEQUENCE(ROWS(r)),2),1,3)),INDEX(FILTER(d,e="OT"),INT(n),IF(MOD(SEQUENCE(ROWS(r)),2),2,4)))),"")

หากยังไม่ใช่ รบกวนสอบถามเข้ามาใหม่ครับ

***สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ***

Norkaz

Re: มีข้อมูลเป็นแบบแถวเดียว แต่ต้องการดึงไปแสดงค่าในตารางใหม่แบบ 2 บรรทัด

Posted: Sun Jul 16, 2023 3:37 pm
by hanuaggie61
norkaz wrote: Sun Jul 16, 2023 1:13 am
L3:Mxx
ลบทุกอย่างออกไปก่อน

L3

=IFERROR(LET(r,L3:L999,n,SEQUENCE(ROWS(r),,2)/2,d,INDIRECT("'"&A3&"'!AQ5:AT999"),e,INDIRECT("'"&A3&"'!AN5:AN999"),HSTACK(INDEX(FILTER(d,e="OT"),INT(n),IF(MOD(SEQUENCE(ROWS(r)),2),1,3)),INDEX(FILTER(d,e="OT"),INT(n),IF(MOD(SEQUENCE(ROWS(r)),2),2,4)))),"")

หากยังไม่ใช่ รบกวนสอบถามเข้ามาใหม่ครับ

***สนับสนุนฟอรั่ม กรุณาคลิกโฆษณาหน้าเพจ***

Norkaz
OT7.jpg
:cp: สูตรดังกล่าวใช้ได้เลยครับ ตรงตามที่ต้องการ (และขอบคุณที่ใส่ Indirect มาให้ด้วยนะครับ)
ส่วนข้อมูลคอลัมภ์อื่นเดี๋ยวผมศึกษาต่อครับ จากฟังก์ชั่นด้านบน ต่อไปครับ
(เพราะมันจะต้องดึงทั้งแถว แต่ข้อมูลยังไม่ได้ทำเตรียมไว้)

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