Page 2 of 3
Re: ให้Excell แสดงผลลัพธ์ครับ
Posted: Sun Jun 26, 2011 4:23 pm
by snasui

เพราะเงื่อนไขในการเขียน 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

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
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

ผมปรับสูตรที่ 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

ไม่เข้าใจครับ จากไฟล์ล่าสุดที่ผมแนบมา คุณ 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

ลองดูตามไฟล์แนบครับ
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

จากไฟล์ล่าสุดแก้สูตรที่ 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 สามารถนำไปใช้ได้โดยง่าย
