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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ผมลองวางแล้วครับPichaiTC wrote:ต้องวาง code ใน Sub Worksheet_Change() นะครับ จึงจะทำงานได้ทันที
ผมว่า ผิดกระทู้นะครับ อ่านกฏ ก่อนนะิbank26 wrote:ผมมีปัญหาในการจัดลำดับคะแนน สมมุติ มีนักเรียนในห้อง 10 คน มีคน
สอบได้10 คะแนน 3 คน
สอบได้ 9 คะแนน 4 คน
สอบได้ 8 คะแนน 3 คน
ผมลองใช้สูตร rank แล้ว ผลปรากฎว่า
คนที่สอบได้ 10 คะแนน ได้ลำดับที่ 1
คนที่สอบได้ 9 คะแนน ได้ลำดับที่ 4 (ระบบคำนวน 10 คะแนน 3 คน + 1 = 4)
คนที่สอบได้ 8 คะแนน ได้ลำดับที่ 8 (ระบบคำนวน 10 คะแนน 3 คน 9 คะแนน 4 คน +1 = 8)
ซึีงที่ต้องการอยากได้คือ
คนที่สอบได้ 10 คะแนน ได้ลำดับที่ 1
คนที่สอบได้ 9 คะแนน ได้ลำดับที่ 2
คนที่สอบได้ 8 คะนนได้ลำดับที่ 3
ไม่ทราบว่าต้องเขียนสูตรอย่างไรครับ
นำ Code ไปวางใน Event Change ครับTanasan wrote:โพสผมอาจจะ พบ งง ไปหน่อย คือ
ผมจะต้องใช้เงื่อนไขในการ copy cell อีกขั้นครับ ผมจึงต้องเขียนโค๊ดขึ้นมา เพื่อนำไปใส่ใน ฟั่งชั่น IF
ขอบคุณมากครับอาจารย์snasui wrote:นำ Code ไปวางใน Event Change ครับTanasan wrote:โพสผมอาจจะ พบ งง ไปหน่อย คือ
ผมจะต้องใช้เงื่อนไขในการ copy cell อีกขั้นครับ ผมจึงต้องเขียนโค๊ดขึ้นมา เพื่อนำไปใส่ใน ฟั่งชั่น IF
ดูภาพประกอบด้านล่างครับ
เนื่องจากครั้งที่แล้วผมได้ Code Copy แบบ Realtime แล้วsnasui wrote:นำ Code ไปวางใน Event Change ครับTanasan wrote:โพสผมอาจจะ พบ งง ไปหน่อย คือ
ผมจะต้องใช้เงื่อนไขในการ copy cell อีกขั้นครับ ผมจึงต้องเขียนโค๊ดขึ้นมา เพื่อนำไปใส่ใน ฟั่งชั่น IF
ดูภาพประกอบด้านล่างครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheet3.ComboBox4.Value = "1" Then
Worksheets("Monthly").Range("D9:D16").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("D17:D38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("E9:E16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("E17:E38").Value = Worksheets("record process").Range("AC19:AC40").Value
If Sheet3.ComboBox6.Value = "2" Then
Worksheets("Monthly").Range("G9:G6").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("G17:G38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("H9:H16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("H17:H38").Value = Worksheets("record process").Range("AC19:AC40").Value
If Sheet3.ComboBox6.Value = "3" Then
Worksheets("Monthly").Range("J9:J6").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("J17:J38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("K9:K16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("K17:K38").Value = Worksheets("record process").Range("AC19:AC40").Value
End If
End Sub
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheet3.ComboBox4.Value = "1" Then
Worksheets("Monthly").Range("D9:D16").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("D17:D38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("E9:E16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("E17:E38").Value = Worksheets("record process").Range("AC19:AC40").Value
If Sheet3.ComboBox6.Value = "2" Then
Worksheets("Monthly").Range("G9:G6").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("G17:G38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("H9:H16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("H17:H38").Value = Worksheets("record process").Range("AC19:AC40").Value
If Sheet3.ComboBox6.Value = "3" Then
Worksheets("Monthly").Range("J9:J6").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("J17:J38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("K9:K16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("K17:K38").Value = Worksheets("record process").Range("AC19:AC40").Value
End If
End Sub
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheet3.ComboBox6.Value = "1" Then
Worksheets("Monthly").Range("D9:D16").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("D17:D38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("E9:E16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("E17:E38").Value = Worksheets("record process").Range("AC19:AC40").Value
ElseIf Sheet3.ComboBox6.Value = "2" Then
Worksheets("Monthly").Range("G9:G6").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("G17:G38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("H9:H16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("H17:H38").Value = Worksheets("record process").Range("AC19:AC40").Value
ElseIf Sheet3.ComboBox6.Value = "3" Then
Worksheets("Monthly").Range("J9:J6").Value = Worksheets("record process").Range("P9:P16").Value
Worksheets("Monthly").Range("J17:J38").Value = Worksheets("record process").Range("P19:P40").Value
Worksheets("Monthly").Range("K9:K16").Value = Worksheets("record process").Range("AC9:AC16").Value
Worksheets("Monthly").Range("K17:K38").Value = Worksheets("record process").Range("AC19:AC40").Value
End If
End Sub
เห็นแล้วครับ ขอบคุณมากครับsnasui wrote: ทำการ Clear เซลล์ AF31 ไม่ให้คำนวณเป็นวงกลม (สังเกตบรรทัด Status Bar ด้านซ้ายล่างจอ)
จากนั้นปรับ Code เป็นด้านล่างครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range) If Sheet3.ComboBox6.Value = "1" Then Worksheets("Monthly").Range("D9:D16").Value = Worksheets("record process").Range("P9:P16").Value Worksheets("Monthly").Range("D17:D38").Value = Worksheets("record process").Range("P19:P40").Value Worksheets("Monthly").Range("E9:E16").Value = Worksheets("record process").Range("AC9:AC16").Value Worksheets("Monthly").Range("E17:E38").Value = Worksheets("record process").Range("AC19:AC40").Value ElseIf Sheet3.ComboBox6.Value = "2" Then Worksheets("Monthly").Range("G9:G6").Value = Worksheets("record process").Range("P9:P16").Value Worksheets("Monthly").Range("G17:G38").Value = Worksheets("record process").Range("P19:P40").Value Worksheets("Monthly").Range("H9:H16").Value = Worksheets("record process").Range("AC9:AC16").Value Worksheets("Monthly").Range("H17:H38").Value = Worksheets("record process").Range("AC19:AC40").Value ElseIf Sheet3.ComboBox6.Value = "3" Then Worksheets("Monthly").Range("J9:J6").Value = Worksheets("record process").Range("P9:P16").Value Worksheets("Monthly").Range("J17:J38").Value = Worksheets("record process").Range("P19:P40").Value Worksheets("Monthly").Range("K9:K16").Value = Worksheets("record process").Range("AC9:AC16").Value Worksheets("Monthly").Range("K17:K38").Value = Worksheets("record process").Range("AC19:AC40").Value End If End Sub
Code: Select all
Sheet3.Range("AE7:AE40").clear
เมื่อผมเลือกวันที่ใน ComboBox เสร็จแล้ว คำสั่งCopy จะไม่ทำงานครับsnasui wrote: ไม่เข้าใจครับ
หากลบการคำนวณเป็นวงกลมออกแล้ว Code ควรจะทำงานได้ หากยังไม่ได้ให้แนบไฟล์ล่าสุดมา จะได้ช่วยตรวจสอบได้ ต้องทำเช่นนี้ทุกครั้งที่ติดปัญหาอย่าโพสต์มาเฉพาะ Code ครับ
Code: Select all
Sheet3.Range("AE7:AE40").clear
ขอบคุณนะครับlogic wrote:ถ้าเปลี่ยนค่าใน combobox แล้วให้โค้ดทำงานเลย อันนี้เป็น combobox change แล้วครับ ไม่ใช่ worksheet change ตอนแรกยังเข้าใจว่าเลือก combobox แล้วเปลี่ยนค่าในเซลล์ก่อนแล้วโค้ดค่อยทำงานครับ
ใช่ครับ ให้ทำสองอย่างในเวลาเดียวกันเลยครับlogic wrote:สรุปคือต้องการให้ทำงาน 2 แบบ คือ คลิก combo แล้วโค้ดทำงาน หรืออีกไม่ก็ทำงานเมื่อเปลี่ยนค่าในเซลล์
แบบนี้ก็ต้องมีทั้งสองอันคือ worksheet_change กับ combobox_change ครับ