Page 1 of 1

ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Sun Sep 23, 2012 8:45 pm
by bafo
สวัสดีครับ

รบกวนขอคำแนะนำด้วยครับ

1. ในชีท WorkTimeMonth ข้อมูลใน Column "C" ในช่อง ชื่อ-สกุล ( C25:C29 )
ผลลัพธ์ชื่อ-สกุล ที่ผมต้องการจะเป็นชื่อที่ไม่ซ้ำกันครับ ( ตามตัวอย่างที่แนบไฟล์ครับ )

2. วันที่การมาปฎิบัติงาน ที่ผมต้องการจะจัดเรียงเป็นแถวตามตัวอย่างครับ
( กำหนดเป็น / ( มา ) และ X ( ไม่มา ) ครับ

เนื่องจากสูตรเดิมที่ผมทำไว้ไม่สามารถ Group ตามชื่อได้ครับ รบกวนขอคำแนะนำสูตรด้วยครับ


ขอบคุณครับ

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Sun Sep 23, 2012 11:05 pm
by snasui
:D จากตัวอย่าง วันที่ในเซลล์ D2:D3 ดูแล้วไม่สัมพันธ์กับวันที่ใน D25:D29 ไม่ทราบว่าที่จริงแล้วต้องสัมพันธ์กันหรือไม่ครับ ข้อมูลต้นแหล่งอยู่ที่ชีท Data ใช่หรือไม่ครับ

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Sun Sep 23, 2012 11:41 pm
by bafo
สวัสดีครับ

วันที่ในช่อง d2:d3 เป็นวันที่ใช้ค้นหาข้อมูลครับ เมื่อเลือกช่วงวันที่ ข้อมูลที่ได้ใน C25:AM30 ก็จะเปลี่ยนไปตามช่วงวันที่ครับ
เหมือกันข้อมูลในชีท TimeWorkDay ครับ เลือกช่วงวันใดวันหนึ่งเท่านััน ( เฉพาะชีทนี้ครับ )
โดยข้อมูลจะปรากฎในช่วงวันที่ๆ เราระบุครับ

ส่วนข้อมูลใน D25:D29 เป็นผลลัพธ์ที่ต้องการครับ ( โดยข้อมูลทั้งหมดจะอ้างอิงจากชีท Data ครับ เป็นข้อมูลหลักครับ )

ความต้องการ :
1.ต้องการตัดชือ-สกุลที่ซ้ำออกครับ ในชีท WorkTimeMonth ในกรณีเดือนนั้นมีชื่อซ้ำครับ ตามตัวอย่างในชีท WorkTimeMonth (C25:C29) โดยสามารถระบุวันที่ค้นหา และข้อมูลจะเปลี่ยนไปตามช่วงวันที่ครับ )
2.วันที่่การมาปฎิบัติงาน อยากได้ข้อมูลตามตัวอย่างที่แนบให้ในไฟล์ครับ ( เนื่องจากที่ผมทำไว้ ได้ข้อมูลไม่ถูกต้องครับ )

ขอบคุณครับ

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Mon Sep 24, 2012 7:30 am
by snasui
:D ตัวอย่างสูตรในชีท WorkTimeMonth ครับ
  1. เซลล์ D4 คีย์สูตรเพื่อนับว่าพบกี่รายการ
    =SUM(IF(FREQUENCY(IF(Date>=Date_From1,IF(Date<=Date_To1,MATCH(Name,Name,0))),(ROW(Name)-MIN(ROW(Name))+1)),1))
    Ctrl+Shift+Enter
  2. เซลล์ B8 คีย์สูตรเพื่อ List ลำดับ
    =IF(ROWS(B$8:B8)>$D$4,"",ROWS(B$8:B8))
    Enter > Copy ลงด้านล่าง
  3. เซลล์ C8 คีย์สูตรเพื่อแสดงชื่อสกุลที่พบแบบไม่ซ้ำ
    =IF(N($B8),INDEX(Name,SMALL(IF(FREQUENCY(IF(Date>=Date_From1,IF(Date<=Date_To1,MATCH(Name,Name,0))),(ROW(Name)-MIN(ROW(Name))+1)),ROW(Name)-MIN(ROW(Name))+1),$B8)),"")
    Ctrl+Shift+Enter > Copy ลงด้านล่าง และปรับสูตรนี้เพื่อนำไปใช้กับคอลัมน์ D:H
  4. เซลล์ I8 คีย์สูตรเพื่อแสดงมาปฏิบัติงาน
    =IF(N($B8),INDEX(Time,MATCH(1,IF($C8=Name,IF(I$6=Date,1)),0)),"")
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
เมื่อแสดงผลได้ถูกต้องแล้วค่อยถามในส่วนที่ยังติดปัญหาต่อไปครับ

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Mon Sep 24, 2012 9:05 am
by bafo
สวัสดีครับ

ผมใส่ค่าสูตรตามที่ได้รับคำแนะนำแล้วครับ ได้ผลออกมาถูกต้องครับ แต่ยังติดปัญหาดังนี้ครับ
1. ในช่อง E8 ( Column สถานภาพ ) ผลลัพธ์ที่ยังได้ไม่ครบถ้วนครับ เนื่องจากข้อมูลที่ได้จะตัดค่าซ้ำออกไป จึงทำให้ผลลัพธ์ที่
ได้ขาดหายไปครับ ( ต้องการแสดงสถานภาพให้ครบทุกรายการครับ )

2. ในช่องวันที่การมาปฎิบัติงาน ผลลัพธ์ที่ได้ถูกต้องตามที่ต้องการครับ แต่เนื่องจากค่าที่ได้ในกรณีไม่ตรงเงื่อนไข จะขึ้นข้อความ
Error ครับ ( #N/A ) โดยผมใช้ Conditionl Formatting เพื่อปรับให้เป็นค่าว่างกรณีขึ้นข้อความ Error ครับ
โดยที่ช่อง I8 ผมได้กำหนด Conditionl Formatting ไว้ดังนี้ครับ =ISERROR($I8)

รบกวนขอคำแนะนำในการใช้สูตรด้วยครับ
ขอบคุณครับ

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Mon Sep 24, 2012 10:54 am
by snasui
:D กรณี Status ให้ Lookup มาจากชื่อ-สกุลแทนใช้สูตรเดิม ด้วยเหตุผลที่ว่าสูตรเดิมจะนำมาเฉพาะ Unique Record เท่านั้น

ส่วนกรณีแสดง #N/A หากไม่ต้องการให้แสดง #N/A ก็เขียนสูตรเข้าไปดักได้ โดยปรับสูตรที่ I8 เป็น

=LOOKUP(CHAR(255),CHOOSE({1,2},"",INDEX(Time,MATCH(1,IF($C8=Name,IF(I$6=Date,1)),0))))

Ctrl+Shift+Enter > Copy ไปทางขวาและลงด้านล่าง

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Mon Sep 24, 2012 11:26 am
by bafo
สวัสดีครับ

ที่ช่อง E8 ใส่สูตรหา Lookup ดังนี้ครับ
=IF(C8="","",VLOOKUP(C8,Name1,3,0))
ได้ผลลัพธ์ถูกต้องครับ

สูตรที่ได้แนะนำให้ ตอนนี้สามารถทำงานได้สมบูรณ์ตามที่ต้องการแล้วครับ แต่ติดปัญหาข้อสุดท้ายครับ

ตามตัวอย่างผมกำหนดให้เมื่อครบ 3 บรรทัด ต้องการให้ขึ้นหน้าใหม่ทุกครั้ง โดยให้กำหนดเลขหน้าในช่อง B3 ครับ
คือเมื่อพิมพ์หมายเลข 2 ที่ช่อง B3 ข้อมูลที่ในลำดับที่ 4-5 ( B11:AM12 ) จะขึ้นมาแทนที่ในช่อง B19 ครับ

รบกวนขอคำแนะนำในการใช้สูตรด้วยครับ

ขอบคุณครับ

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Mon Sep 24, 2012 9:33 pm
by snasui
:D ลองตามนี้ครับ

ที่เซลล์ B8 คีย์

=IF(OR(ROWS(B$8:B8)>2,2*($B$3-1)+ROWS(B$8:B8)>$D$4),"",2*($B$3-1)+ROWS(B$8:B8))

Enter > Copy ลงด้านล่าง

Re: ต้องการให้โชว์ข้อมูล โดยกำหนดตามช่วงวันที่

Posted: Tue Sep 25, 2012 6:04 pm
by bafo
สวัสดีครับ

สูตรที่แนะนำมาให้ สามารถใช้งานได้สมบูรณ์แล้วครับ


ขอบคุณครับ