EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ผมลองอธิบายมาในเอกสารตามที่แนบมาให้ครับ รบกวนอาจารย์ช่วยแนะนำหน่อยครับ ไม่แน่ใจว่าจะตั้งได้ตรงประเด็นที่อาจารย์ต้องการหรือเปล่าครับsnasui wrote: ลองอธิบายมาใหม่ว่าเซลล์ใด ต้องการให้มีค่าเท่าใด ยกตัวอย่างคำตอบที่ถูกต้องมาด้วย พร้อมทั้งอธิบายว่าที่ได้ค่าเท่านั้นมีวิธีคิดอย่างไร ตัวอย่างคำตอบให้คีย์ลงมาตรง ๆ ไม่จำเป็นต้องเขียนมาเป็นสูตรครับ
ขอบคุณครับอาจารย์ สำหรับการคิดชั่วโมงถ้าทำงานแค่ 1 ประเภทจะใช้เวลามาตรฐาน x เป้าหมาย เป็นตัวกำหนดเป้าหมายครับ หากได้เกินเป้าหมายก็จะเอาตัวที่เกินมาไปคิดในส่วนที่เกินครับmenem wrote:ทำไมข้อ 2 และ ข้อ 3 ถึงคิดชั่วโมงไม่เหมือนกันครับ ?
2. คิดเป็น รายตัว = (2x4) + (1x4)
= 8 + 4
3. คิดรวมเป็นชั่วโมง = 12.5 ชม
ขอบคุณครับพี่ ผมลองใส่ข้อมูลลงใน File แล้วเจอปัญหาค่าที่ได้มันออกมาไม่ตรงกันครับ ฝากพี่ดูให้หน่อยครับmenem wrote:ลองดูอีกทีครับ
ปล. ผมไม่ใช่อาจารย์ครับ เป็นแค่เพื่อนสมาชิกบอร์ดคนนึงเท่านั้นครับ
ขอบคุณครับพี่menem wrote:ลองดูอีกทีครับ
ผมรบกวนพี่ๆและอาจารย์ช่วยแนะนำการทำ Drop down list ตามFile ที่ผมแนบมาให้หน่อยครับ คือผมต้องการจะเลือกรายการชื่องานและรายละเอียดใน Drop down list โดยไม่ต้องการให้มีการคีย์ค่าแล้วให้คอลัมน์ K (hrs/unit) แสดงค่าาขึ้นมาเองตรงตามใน Sheet data ครับ (file แนบครับ)pro602 wrote:ขอบคุณครับพี่menem wrote:ลองดูอีกทีครับ
_Main
เอาไว้เป็นตัวเลือกหลัก_Start
และ _SubHead
ด้วยเพื่อความสะดวกในการเขียนสูตร ลองดูในไฟล์ครับ)_SubListVal
ไว้เป็น drop down ของคอลัมน์ I_SubListVal2
เอาไว้เป็น drop down ของคอลัมน์ JH -> I -> J
drop down ถึงจะแสดงให้เห็น หากจะแก้ ก็ต้องลบข้อมูลจากคอลัมน์ J -> I -> H
ครับ เพื่อป้องกันการแก้ไขโดยเลือกสิ่งที่ไม่สอดคล้องกับข้อมูลจริงขอบคุณครับเดี๋ยวผมจะลองเอาไปศึกษาดูครับ..แต่ก็ยังสงสัยครับว่าเวลาที่คอลัมน์ K มันไม่ขึ้นมาครับผมDhitiBank wrote:รายการมีให้เลือกเยอะขนาดนี้ คงต้องทำตารางรายการไม่ซ้ำของแต่ละตัวเลือกก่อน ลองแบบนี้ครับ (ดูไฟล์ประกอบ)
ผมสร้างรายการไม่ซ้ำในชีท Uniq (หากใช้รูปแบบเป็นตารางเลยจะดีกว่า แต่ผมไม่ได้ใช้รูปแบบนั้นเพราะอยากให้ดูสูตรเผื่อเอาไว้ใช้ครับ) ผมใช้ Remove duplicate และสูตรเพื่อหารายการไม่ซ้ำของแต่ละตัวเลือก
(สามารถอ่านรายละเอียดเพิ่มเติมจากลิ้งค์นี้ครับ dynamic-cascading dropdowns)
พอสร้างตารางรายการไม่ซ้ำเสร็จแล้วก็สร้าง Name Range เพื่อเอาไว้ใช้เป็น Drop down โดย
(เข้าเมนู Name Manager กด Ctrl+F3 ครับ)
1. Name Range ชื่อ_Main
เอาไว้เป็นตัวเลือกหลัก
=Uniq!$F$2:$F$54
2. (นอกจากนี้ผมยังสร้าง Name Range ชื่อ_Start
และ_SubHead
ด้วยเพื่อความสะดวกในการเขียนสูตร ลองดูในไฟล์ครับ)
3. สร้าง Name Range ชื่อ_SubListVal
ไว้เป็น drop down ของคอลัมน์ I
=IF(OR(data!$H18="",data!$J18<>""),"",OFFSET(_Start,1,MATCH(data!E18,_SubHead,0)-1,5-SUM(--ISERR(OFFSET(_Start,1,MATCH(data!E18,_SubHead,0)-1,5)))))
4. สร้าง Name Range ชื่อ_SubListVal2
เอาไว้เป็น drop down ของคอลัมน์ J
=OFFSET(_Start,1,MATCH(data!H12,_SubHead,0)-1,5-SUM(--ISERR(OFFSET(_Start,1,MATCH(data!H12,_SubHead,0)-1,5))))
5. มาที่ชีท data
5.1 ที่ H12 สร้าง Validation แบบ List คีย์สูตรตรง Source คือ
=IF($I12<>"","",_MainList)
5.2 ที่ I12 สร้าง Validation เช่นเดียวกัน คีย์ตรง Source ว่า
=_SubListVal
5.3 ที่ J12 สร้าง Validation คีย์ตรง Source ว่า
=_SubListVal2
6. คัดลอก H12:J12 แล้วเอา Validation ไปวางในแถวถัดลงไปครับ
วิธีใช้คือ การเลือก Drop down จะบังคับให้เลือกจากคอลัมน์H -> I -> J
drop down ถึงจะแสดงให้เห็น หากจะแก้ ก็ต้องลบข้อมูลจากคอลัมน์J -> I -> H
ครับ เพื่อป้องกันการแก้ไขโดยเลือกสิ่งที่ไม่สอดคล้องกับข้อมูลจริง
วิธีด้านบนเป็นการสร้าง drop down list อย่างเดียวครับ ส่วนเรื่องเวลาในคอลัมน์ K รบกวนอธิบายหน่อยได้ไหมครับว่ามีเกณฑ์อย่างไรถึงจะรู้ว่าต้องเป็นตัวเลขจากคอลัมน์ K ในชีท Time คือ ในชีท Time ในส่วนของ Section มีทั้ง Gerber cutting, Sewing,... และอื่นๆpro602 wrote:เวลาที่คอลัมน์ K มันไม่ขึ้นมาครับผม
ผมต้องขอโทษด้วยครับที่ตอบกลับล่าช้าและทำให้พี่ๆและอาจารย์สับสน...ผมลืมไปครับว่าต้องมีคอลัมน์ให้เลือก Section และให้เวลาที่แสดงตรงตาม Model no.,Model name,Type และ Section ที่เราเลือกครับ ผมขอรบกวนพี่ๆและอาจารย์ช่วยหน่อยครับจะกลางเดือนแล้วผมต้องเร่งทำจ่ายค่าแรงจูงใจให้เด็กๆทั้งโรงงานครับDhitiBank wrote:วิธีด้านบนเป็นการสร้าง drop down list อย่างเดียวครับ ส่วนเรื่องเวลาในคอลัมน์ K รบกวนอธิบายหน่อยได้ไหมครับว่ามีเกณฑ์อย่างไรถึงจะรู้ว่าต้องเป็นตัวเลขจากคอลัมน์ K ในชีท Time คือ ในชีท Time ในส่วนของ Section มีทั้ง Gerber cutting, Sewing,... และอื่นๆpro602 wrote:เวลาที่คอลัมน์ K มันไม่ขึ้นมาครับผม
ขอถามว่า
1. ผมต้องดูตรงไหนในชีท data จึงจะรู้ว่าต้องเลือกเลขที่คอลัมน์นั้นๆ มาแสดง หรือว่าให้เลือกเฉพาะตัวเลขในคอลัมน์ Upholstery มาแสดงครับ
2. รายการ Model ต่างๆ ในชีท Time มีซ้ำกันด้วย ให้เลือกข้อมูลอันไหนครับ
และขอปรับสูตรเพื่อหาค่าไม่ซ้ำในชีท Uniq เซลล์ H2 เป็น
=INDEX($B$2:$B$77,SMALL(IF(FREQUENCY(IF($A$2:$A$77=H$1,MATCH(IF($A$2:$A$77=H$1,$B$2:$B$77),IF($A$2:$A$77=H$1,$B$2:$B$77),0)),ROW($A$2:$A$77)-ROW($A$2)+1),ROW($A$2:$A$77)-ROW($A$2)+1),ROWS(H$2:H2)))
กด Ctrl+Shift ค้างไว้ แล้ว Enter คัดลอกไปทางขวาจนสุดตารางที่หัวตารางสีเขียวเข้ม -> คัดลอกลงจนเห็นค่า error ในทุกคอลัมน์
แล้วปรับสูตรใช้กับช่วงตารางสีเขียวอ่อนครับ (สูตรเดิมดึงมาเกิน)
สำหรับ Section ตามตัวอย่างที่แนบมาให้เลือกที่ K12 ครับแล้วให้เวลาแสดงที่ K13 ขึ้นมาเองครับDhitiBank wrote:คุณ Pro602 โปรดบอกให้ชัดเจนครับว่า "Section" ระบุที่เซลล์ไหน เพราะต้องเอาไปเขียนในสูตรด้วยครับ
นอกจากนี้ คุณยังไม่ได้ตอบคำถามข้อ 2 ที่ว่าหากมีข้อมูลซ้ำกันในชีท "Time" จะต้องเลือกข้อมูลมาแสดงอย่างไร เช่น
A1116 --> OSKAR LARGE 3STR --> LARGE มี Upholstery 2 ค่า คือ 3.81 และ 3.45 จะต้องเอาค่าไหนมาใช้ครับ
_Section
เพื่อเอามาใช้เป็น drop down list ของคอลัมน์ K นะครับ (ลากคลุม K12 ถึง K แถวที่ต้องการ แล้วเลือก Validation แบบรายการโดยให้ Source คือ _Section) และที่ L12 คีย์ขอบคุณครับคืนนี้ผมขอเอาไปศึกษาต่อครับDhitiBank wrote:ผมเพิ่ม Name Range ชื่อ_Section
เพื่อเอามาใช้เป็น drop down list ของคอลัมน์ K นะครับ (ลากคลุม K12 ถึง K แถวที่ต้องการ แล้วเลือก Validation แบบรายการโดยให้ Source คือ _Section) และที่ L12 คีย์
=IF(COUNTA(H12:K12)<4,0,INDEX(Time!$E$3:$O$74,MATCH(1,INDEX((Time!$A$3:$A$74=H12)*(Time!$B$3:$B$74=I12)*(Time!$D$3:$D$74=J12),0),0),MATCH(K12,_Section,0)))
Enter -> คัดลอกลงล่างครับ
สวัสดีครับท่าน"DhitiBank" ตามที่ท่านได้ช่วยแนะนำและให้การช่วยเหลือในการโปรแกรม Excel ตามที่แนบมานั้น ตอนนี้ผมนำไปใช้งานแล้วครับแต่อยากสอบถามเกี่ยวกับการเลือกข้อมูลใน Drop down ครับ มีวิธีไหนให้ค้นหาชื่อที่เราต้องการได้เร็วไหมครับและสามารถเพิ่มขนาดตัวหนังสือได้ไหมครับ...และผมจะเพิ่มข้อมูลใน Sheet data ต้องทำแก้ไขสูตรตรงจุดไหนบ้างครับพี่เพราะข้อมูลตะมีการเพิ่มเรื่อยๆครับDhitiBank wrote:ผมเพิ่ม Name Range ชื่อ_Section
เพื่อเอามาใช้เป็น drop down list ของคอลัมน์ K นะครับ (ลากคลุม K12 ถึง K แถวที่ต้องการ แล้วเลือก Validation แบบรายการโดยให้ Source คือ _Section) และที่ L12 คีย์
=IF(COUNTA(H12:K12)<4,0,INDEX(Time!$E$3:$O$74,MATCH(1,INDEX((Time!$A$3:$A$74=H12)*(Time!$B$3:$B$74=I12)*(Time!$D$3:$D$74=J12),0),0),MATCH(K12,_Section,0)))
Enter -> คัดลอกลงล่างครับ