Page 2 of 3

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 4:23 pm
by snasui
:D เพราะเงื่อนไขในการเขียน Validation ไม่ได้รวมเรื่องรหัสสินค้าเข้าไปเนื่องจากไม่ได้แจ้งมาด้วยครับ มีเงื่อนไขอื่นอีกไหมครับ :?:

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 4:36 pm
by snasui
กรณีไม่มีเงื่อนไขเพิ่มเติมอีก สามารถทำตามด้านล่างครับ

ไปที่ Sheet2
1. คลุม F3:Fn (n คือค่าใด ๆ ที่ต้องการเช่น 1000)
2. เข้าเมนู Data > Data Validation
3. ที่แถบ Setting ตรง Allow เลือก Custom > ตรง Formula คีย์
=SUMPRODUCT(--(D$3:D3&F$3:F3=D3&F3))=1
4. คลิก OK แล้วทดสอบการคีย์ข้อมูล > สังเกตการแสดงผล

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 4:52 pm
by rocketkenji
หมดแล้วครับสุดท้ายจริงๆๆ ขอบคุณมากครับอาจารย์

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 8:44 pm
by rocketkenji
ช่อง F3 - F9 สามารถใส่มัดงาน ที่ 1 ได้หมดเลยครับ รบกวนอาจารย์อีกทีนะครับ ดังตัวอย่างไฟล์ที่แนบมาครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 9:26 pm
by snasui
:lol: :lol: 1 กับ ,1 กับ 1, ไม่เท่ากันนะครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 9:45 pm
by rocketkenji
ไม่มีตัวช่วยหรือครับ..ถ้าเป็นแบบนั้น หนึ่งบรรทัดผมก็ ครีข้อมูลได้แค่ 1 มัดเองสิครับ

ข้อมูลจิงๆๆ มีเป็นร้อยมัดเลยครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 10:06 pm
by snasui
:shock:
rocketkenji wrote:ถ้าเป็นแบบนั้น หนึ่งบรรทัดผมก็ คีย์ข้อมูลได้แค่ 1 มัดเองสิครับ
คงไม่ใช่ครับ ถ้า 1,2,3,4 คือ 4 มัด
rocketkenji wrote: ข้อมูลจริงๆๆ มีเป็นร้อยมัดเลยครับ
ถ้าผมต้องคีย์ 100 มัดผมจะหาวิธีการปรับปรุง Worksheet ใหม่ แค่ 10 มัดก็ถือว่าไม่เหมาะในการทำข้อมูลลักษณะนี้

ส่วนวิธีการปรับปรุงจากเดิมก็ใช้คอลัมน์ Q เข้ามาช่วยเชื่อมข้อมูลเข้าไปใหม่แล้วนำไปใช้ใน Validation ลองดูตามไฟล์แนบครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 10:18 pm
by rocketkenji
แล้วจะป้องกันการคีย์ข้อมูลซ้ำ แบบไหนดีครับในเมื่อข้อมูลมีปริมาณมาก ขอคำแนะนำหน่อยครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Sun Jun 26, 2011 10:21 pm
by snasui
ไม่ทราบว่าได้ดูไฟล์ที่ผมปรับปรุงไปให้แล้วยังครับ ติดตรงไหนก็ถามมาได้ต่อ มีกี่เงื่อนไขก็ควรแจ้งให้ครบครับ อ้อ Validation มันไม่ตรวจค่าที่คีย์ไว้แล้วนะครับ การทดสอบต้องคีย์ค่าเข้าไปใหม่

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 8:51 am
by rocketkenji
ดูแล้วครับ มันจะติด กรณี ถ้าผมคีย์มัดที่ 1,2,3,4 ไปแล้ว ถ้าเจอมัดที่ 12,3,4 มันก้อจะคีย์ต่อไม่ได้ครับ กำลังปรับปรุงการใช้ภาษาไทยให้ถูกต้องอยู่ครับผิดพลาดตรงไหนขออภัยด้วยครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 11:43 am
by snasui
:D ผมปรับสูตรที่ Q3 มาให้ใหม่เป็น

=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(","&K3&","&L3&","&M3&","&N3&","&O3&",",",,,,,",","),",,,,",","),",,,",","),",,",","),2,LEN(K3&L3&M3&N3&O3)+COUNTIF(K3:O3,"?*")-1)

ลองทดสอบดูตามไฟล์แนบครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 12:24 pm
by rocketkenji
มัดงานมันตรวจสอบไม่ได้ครับ. ผมว่าต้องลงได้ทีละมัด แล้วก็ใช้ Data Validation อย่างเดียวโอเคกว่าครับ แต่เวลาคีย์ข้อมูลเหนื่อยแน่ๆ T^T

อย่างที่อาจารย์บอกไว้ครับ ว่า 1 กับ 1, มันคนละชื่อกัน

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 12:28 pm
by snasui
:D ไม่เข้าใจครับ จากไฟล์ล่าสุดที่ผมแนบมา คุณ rocketkenji ทดสอบคีย์ค่าซ้ำใดลงไปแล้วโปรแกรมไม่ตรวจสอบให้ครับ :?:

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 12:36 pm
by rocketkenji
อย่างช่อง F3 กับ F3 จะมีมัดงานที่ 1 ซ้ำกันครับ เพราะชื่อมันไม่เหมือนกันอย่างที่อาจารย์เคยบอกไว้ครับ เลยทำให้ Data Validation ตรวจสอบไม่ได้

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 8:56 pm
by snasui
:D ลองดูตามไฟล์แนบครับ

1. ที่เซลล์ K3 คีย์

=IF(LEN($I3&TRIM(MID(SUBSTITUTE(","&$F3,",",REPT(" ",$J3)),COLUMNS($K3:K3)*$J3,$J3)))=4,"",$I3&TRIM(MID(SUBSTITUTE(","&$F3,",",REPT(" ",$J3)),COLUMNS($K3:K3)*$J3,$J3)))

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

2. ที่เซลล์ P3 คีย์

=SUMPRODUCT(--(K$3:O3<>""),--(COUNTIF(K$3:O3,K$3:O3)>1))

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

3. ที่ F3:F15 กำหนด Validation

=$P3=0

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Mon Jun 27, 2011 11:09 pm
by rocketkenji
ซูฮก เลยครับ โอเคเลยครับ อาจารย์.. เดี๋ยวถ้ามีปัญหาอะไรเพิ่มเติมจะเข้ามาถามนะครับ ขอบคุณครับ

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Tue Jun 28, 2011 9:02 am
by rocketkenji
รบกวนอีกครั้งครับ..... EDIT6 ช่องจำนวนตัว ไม่รวมยอดของมัดงานให้ครับ จำนวนตัวเป็น 0 ไม่ว่าจะใส่กี่มัดก็ตาม

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Tue Jun 28, 2011 6:43 pm
by snasui
:D จากไฟล์ล่าสุดแก้สูตรที่ Sheet2 เซลล์ G3 เป็นด้านล่างครับ

จากสูตรเดิม

=SUM(INDEX(Sheet1!$F$3:$J$12,MATCH(1,IF(Sheet1!$B$3:$B$12=$D3,IF(Sheet1!$C$3:$C$12=$E3,1)),0),0)*ISNUMBER(MATCH(Sheet1!$F$2:$J$2,$K3:$O3+0,0)))

เป็น

=SUM(INDEX(Sheet1!$F$3:$J$12,MATCH(1,IF(Sheet1!$B$3:$B$12=$D3,IF(Sheet1!$C$3:$C$12=$E3,1)),0),0)*ISNUMBER(MATCH($I3&Sheet1!$F$2:$J$2,$K3:$O3,0)))

Ctrl+Shift+Enter > Copy ลงด้านล่าง

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Tue Jun 28, 2011 7:03 pm
by rocketkenji
ได้ละครับสุดยอดจริงๆ ขอบคุณมากครับ


ปล. ผมลองขยายขนาดเป็น 100 มัด คอมประมวลผลช้ามากเลยครับ ขนาดมี 2 แถว เอง รอประมาณ 5 วินาที แล้วถ้ามีเป็น หมื่นแถวนี้สงสัยประมวลผลไม่ไหวแน่

Re: ให้Excell แสดงผลลัพธ์ครับ

Posted: Wed Jun 29, 2011 9:45 am
by snasui
rocketkenji wrote: ปล. ผมลองขยายขนาดเป็น 100 มัด คอมประมวลผลช้ามากเลยครับ ขนาดมี 2 แถว เอง รอประมาณ 5 วินาที แล้วถ้ามีเป็น หมื่นแถวนี้สงสัยประมวลผลไม่ไหวแน่
ครับ...เนื่องจากสูตรพวกนี้เป็นสูตร Array แล้วในบางสูตรต้องเช็คทุกเซลล์ตั้งแต่บรรทัดแรก เมื่อใช้สูตรจำนวนมากย่อมคำนวณช้าแน่นอนครับ แค่ 2 บรรทัดก็เสียเวลาไป 5 วินาที ในหนึ่งวันมีแค่ 86400 วินาที ถ้าไม่ทำงานอื่นใด 1 วัน (24 ชม.) จะคำนวณได้แค่ 17280 บรรทัด

หากต้องการทำงานให้เร็วคงต้องปรับการเก็บข้อมูลใหม่ เช่น ใน 1 เซลล์ก็แค่ 1 มัด ข้อมูลอาจจะเยอะก็ถือว่าปกติ เพราะหลักการเก็บข้อมูลควรจะเก็บเช่นนี้ คือเป็น Database สามารถนำไปใช้ได้โดยง่าย :mrgreen: