:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

รบกวนสอบถามการเขียน code ใน combobox

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: รบกวนสอบถามการเขียน code ใน combobox

Re: รบกวนสอบถามการเขียน code ใน combobox

#29

by natthaporn » Sat May 25, 2013 4:35 pm

ดิฉันพยายามปรับ code เป็นชั่วโมง จริงๆ แล้วเปลี่ยนแค่นั้นเองหรือคะ ดิฉันคิดลึกไปไกลถึงพระจันทร์ โน่นเลยคะ
ขอบคุณมากคะอาจารย์

Re: รบกวนสอบถามการเขียน code ใน combobox

#28

by snasui » Sat May 25, 2013 2:37 pm

snasui wrote:
natthaporn wrote:รบกวนอาจารย์แนะนำด้วยคะ
:D ดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub ComboBox2_Change()
    Dim sh As String, mth As String, fml As String
    Application.Calculation = xlCalculationManual
    With ActiveSheet
        sh = .ComboBox2
        mth = .ComboBox1
        fml = "=SUMIFS(INDEX('" & sh & "'!$Z$3:$AK$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$Z$2:$AK$2,0)),"
        fml = fml & "INDEX('" & sh & "'!$B$3:$M$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$B$2:$M$2,0)),$B5,"
        fml = fml & "INDEX('" & sh & "'!$N$3:$Y$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$N$2:$Y$2,0)),C$4)"
        .Range("C5").Formula = fml
        .Range("C5").Copy
        .Range("C5:M16").PasteSpecial xlPasteFormulas
        Application.Calculation = xlCalculationAutomatic
        .Range("C5:M16") = .Range("C5:M16").Value
    End With
End Sub
:D กรณีไม่ต้องเลือกชี่ท จาก Code ด้านบน ให้เปลี่ยน sh = .ComboBox2 เป็น sh = "COMA" ครับ

Re: รบกวนสอบถามการเขียน code ใน combobox

#27

by natthaporn » Sat May 25, 2013 12:53 pm

อาจารย์ดิฉันทีเรื่องรบกวนสอบถามเกี่ยวเนื่องจากคราวที่แล้ว เนื่องจาก file การทำงานของดิฉันมีหลายหลากรูปแบบมากคะ ในกรณี
นี้จะดึงข้อมูลจากชีทเพียง 1 ชีท เท่านั้น แต่ต้องเลือกเป็นรายเดือน โดยดิฉันนำ coed เดิมที่อาจารย์แนะนำมาปรับใช้ ซึ่งดิฉันมีการ
ตั้งชื่อช่วงดังนี้คะ
DATA1 = SHEETS("COMA").RANGE("B3:M23")
DATA3 = SHEETS("COMA").RANGE("N3:Y23")
DATA3 = SHEETS("COMA").RANGE("Z3:AK23")
MONTH1 = SHEETS("COMA").RANGE("B2:M2")
MONTH2 = SHEETS("COMA").RANGE("N2:Y2")
MONTH3 = SHEETS("COMA").RANGE("Z2:AK2")
ซึ่งดิฉันได้ปรับ code ตามนี้คะ พยายามปรับแล้วแต่ก็ยังเกิด error อยู่คะ

Code: Select all

Dim sh As String, mth As String, fml1 As String
     Dim dt1 As String, dt2 As String, dt3 As Integer
     Dim mth1 As String, mth2 As String, mth3 As String
     
    Application.Calculation = xlCalculationManual
    With ActiveSheet
        'sh = .ComboBox2
        mth = .ComboBox1
        dt1 = Sheets("COMA").Range("DATA1") 'เริ่ม error ที่ row นี้คะ
        dt2 = Sheets("COMA").Range("DATA2")
        dt3 = Sheets("COMA").Range("DATA3")
        mth1 = Sheets("COMA").Range("MONTH1")
        mth2 = Sheets("COMA").Range("MONTH2")
        mth3 = Sheets("COMA").Range("MONTH3")
        
        fml1 = "=SUMIFS(INDEX(dt3,0,"
        fml1 = fml1 & "MATCH(" & Chr(34) & mth & Chr(34) & ",mth3,0)),"
        fml1 = fml1 & "INDEX(dt1,0,"
        fml1 = fml1 & "MATCH(" & Chr(34) & mth & Chr(34) & ",mth1,0)),$B5,"
        fml1 = fml1 & "INDEX(dt2,0,"
        fml1 = fml1 & "MATCH(" & Chr(34) & mth & Chr(34) & ",mth2,0)),C$4)"
        .Range("C5").Formula = fml1
        .Range("C5").Copy
        .Range("C5:M16").PasteSpecial xlPasteFormulas
        Application.Calculation = xlCalculationAutomatic
        .Range("C5:M16") = .Range("C5:M16").Value
    End With
รบกวนอาจารย์ช่วยแนะนะด้วยนะคะ

ขอบคุณคะ
Attachments
Code VBA-Combobox7.xlsm
(33.17 KiB) Downloaded 27 times

Re: รบกวนสอบถามการเขียน code ใน combobox

#26

by natthaporn » Fri May 24, 2013 11:48 pm

ดิฉันจะลองนำสูตร sumifs(index(matc... ไปแทนที่สูตรเดิมคะ
ขอขอบคุณอาจารย์มากสำหรับทุก ๆ คำแนะนำ และทุก ๆ คำตอบคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#25

by snasui » Fri May 24, 2013 11:00 pm

:lol: ผมตอบปัญหามาเกิน 10 ปี ไม่ต้องเป็นห่วงในทุก ๆ เรื่องครับ

Chr(34) คือเครื่องหมาย " ใช้เชื่อมกับตัวแปรเพื่อให้แสดงเป็นเช่น "JAN", "FEB" เป็นต้น

Sumif, Sumifs เร็วกว่า Sum แบบ Array ทุกชนิดครับ

Re: รบกวนสอบถามการเขียน code ใน combobox

#24

by natthaporn » Fri May 24, 2013 10:55 pm

อาจารย์คะ ดิฉันขอโทษด้วนคะ ข้อ.3 ดิฉันหาเจอแล้วเป็นเพราะ range หายไปบางส่วนคะ

Code: Select all

fml = "=SUMIFS(INDEX('" & sh & "'!$Z$3:$AK$27,0," & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$Z$2:$AK$2,0)),"
:$AK$27 ตรงนี้หายไปคะ ดิฉันเข้าไปเล่น code แล้วแก้กลับคืนไม่ครบคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#23

by natthaporn » Fri May 24, 2013 10:45 pm

ได้ผลลัพธ์ตามที่่ต้องการแล้วคะ ขอขอบคุณอาจารย์มากคะ ดิฉันพยายามทำความเข้าใจ code ที่อาจารย์แนะนำมา ก่อนอื่นต้องขอบอกก่อนเลยว่ายากมากเลยคะ ดิฉันขอสอบถามดังนี้คะ
1. chr(34) หมายความว่าอย่างไรคะ เพราะดิฉันไม่เห็นตัวแปรใน code ชื่อว่า "chr" เลยคะ ทำไมต้องเอา chr(34) มาเชื่อมกับ dim mth และ dim sh ด้วยคะ
2. chr(34) ใน code นี้ เหมือนหรือต่างกันกับ char(255) ในสูตร excel อย่างไรคะ
3. ดิฉั้นลองปรับ code เป็น

Code: Select all

Dim sh As String, mth As String, fml As String
    Application.Calculation = xlCalculationManual
    With ActiveSheet
        sh = .ComboBox2
        mth = .ComboBox1
        fml = "=SUMIFS(INDEX('" & sh & "'!$Z$3:,0," 'debug ไว้คะ
        'fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$Z$2:$AK$2,0))," 'debug ไว้คะ
        fml = "=SUMIFS(INDEX('" & sh & "'!$Z$3:,0," & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$Z$2:$AK$2,0)),"
        fml = fml & "INDEX('" & sh & "'!$B$3:$M$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$B$2:$M$2,0)),$B5,"
        fml = fml & "INDEX('" & sh & "'!$N$3:$Y$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$N$2:$Y$2,0)),C$4)"
        .Range("C5").Formula = fml 'error ที่ row นี้คะ
        .Range("C5").Copy
        .Range("C5:M16").PasteSpecial xlPasteFormulas
        Application.Calculation = xlCalculationAutomatic
        .Range("C5:M16") = .Range("C5:M16").Value
    End With
ดิฉันลองปรับดูเพื่อเอาไว้ศึกษาเป็นความรู้เพิ่มเติมคะ

4. ข้อนี้ขอรบกวนถามอาจารย์เพื่อเป็นความรู้คะ เกี่ยวกับเรื่องของสูตร excel ระหว่างสูตร "sumifs(index(match..... กับ สูตร {sum((xxx=xxx)*(xxx=xxx)*xxx)} อันไหนทำงานเร็วกว่ากันคะ เพราะที่ผ่านมาดิฉันใช้สูตรอันที่ 2 ในการดึงข้อมูลคะ

ถ้าอาจารย์เหนื่อยแล้วเอาไว้ตอบพรุ่งนี้ก็ได้นะคะ เพราะเมื่อคืนเห็นอาจารย์ ตอบกระทู้ของดิฉันตอนเที่ยงคืน
ขอบคุณอาจารย์มากคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#22

by yodpao.b » Fri May 24, 2013 6:49 pm

ขอบคุณครับ เข้าใจแล้วครับ
ต่อไปเวลาจะทำเดือน ผมก็ไม่ต้องให้มันไปมองหาใน excel แล้ว

Re: รบกวนสอบถามการเขียน code ใน combobox

#21

by snasui » Fri May 24, 2013 6:11 pm

yodpao.b wrote::oops: ทั้งอ่านทั้งทำตามแล้วยัง งง อยู่เลย ยอม
:?: อาจารย์ครับขอถามอะไรหน่อย
The attachment untitled11.GIF is no longer available
จากรูปด้านบน
ผมสงสัยว่า Combobox ที่วงไว้ทำไมเมื่อดลิ๊กแล้ว จึงมีข้อความขึ้น
ทั้งทั้งทีไม่เห็นมี Code เลย
:D ดูภาพประกอบด้านล่างครับ จะเห็นว่าที่ Properties จะเห็นว่ามีการนำ Range Name ที่ชื่อ COM มาแสดงตรง ListFillRange
Attachments
RangeName.png
RangeName.png (86.44 KiB) Viewed 190 times

Re: รบกวนสอบถามการเขียน code ใน combobox

#20

by snasui » Fri May 24, 2013 6:04 pm

natthaporn wrote:รบกวนอาจารย์แนะนำด้วยคะ
:D ดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub ComboBox2_Change()
    Dim sh As String, mth As String, fml As String
    Application.Calculation = xlCalculationManual
    With ActiveSheet
        sh = .ComboBox2
        mth = .ComboBox1
        fml = "=SUMIFS(INDEX('" & sh & "'!$Z$3:$AK$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$Z$2:$AK$2,0)),"
        fml = fml & "INDEX('" & sh & "'!$B$3:$M$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$B$2:$M$2,0)),$B5,"
        fml = fml & "INDEX('" & sh & "'!$N$3:$Y$27,0,"
        fml = fml & "MATCH(" & Chr(34) & mth & Chr(34) & ",'" & sh & "'!$N$2:$Y$2,0)),C$4)"
        .Range("C5").Formula = fml
        .Range("C5").Copy
        .Range("C5:M16").PasteSpecial xlPasteFormulas
        Application.Calculation = xlCalculationAutomatic
        .Range("C5:M16") = .Range("C5:M16").Value
    End With
End Sub

Re: รบกวนสอบถามการเขียน code ใน combobox

#19

by yodpao.b » Fri May 24, 2013 5:26 pm

:oops: ทั้งอ่านทั้งทำตามแล้วยัง งง อยู่เลย ยอม
:?: อาจารย์ครับขอถามอะไรหน่อย
รูป
รูป
untitled11.GIF (22.34 KiB) Viewed 514 times
จากรูปด้านบน
ผมสงสัยว่า Combobox ที่วงไว้ทำไมเมื่อดลิ๊กแล้ว จึงมีข้อความขึ้น
ทั้งทั้งทีไม่เห็นมี Code เลย

Re: รบกวนสอบถามการเขียน code ใน combobox

#18

by natthaporn » Fri May 24, 2013 3:44 pm

อาจารย์ดิฉันลองปรับสูตร และลองเขียน code ใหม่ (สุดความสามารถที่มีอยู่ในตอนนี้คะ) แต่ run แลัว error คะ

Code: Select all

Private Sub ComboBox2_Change()
 With Range("Target1")
        Select Case ComboBox2.Text
            Case "COMA": .Value = "=SUMIFS(INDEX(COMA!R3C26:R23C37,0,MATCH(combobox1.value,COMA!R2C26:R2C37,0)),INDEX(COMA!R3C2:R23C13,0,MATCH(combobox1.value,COMA!R2C2:R2C13,0)),REPORT!RC2,INDEX(COMA!R3C14:R23C25,0,MATCH(combobox1.value,COMA!R2C14:R2C25,0)),REPORT!R4C)"
            Case "COMB": .Value = "=SUMIFS(INDEX(COMB!R3C26:R23C37,0,MATCH(combobox1.value,COMB!R2C26:R2C37,0)),INDEX(COMB!R3C2:R23C13,0,MATCH(combobox1.value,COMB!R2C2:R2C13,0)),REPORT!RC2,INDEX(COMB!R3C14:R23C25,0,MATCH(combobox1.value,COMB!R2C14:R2C25,0)),REPORT!R4C)"
            Case "COMC": .Value = "=SUMIFS(INDEX(COMC!R3C26:R23C37,0,MATCH(combobox1.value,COMC!R2C26:R2C37,0)),INDEX(COMC!R3C2:R23C13,0,MATCH(combobox1.value,COMA!R2C2:R2C13,0)),REPORT!RC2,INDEX(COMC!R3C14:R23C25,0,MATCH(combobox1.value,COMC!R2C14:R2C25,0)),REPORT!R4C)"
           
        End Select
    End With
ActiveSheet.Range("Target1").Copy
ActiveSheet.Range("C5").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ActiveSheet.Range("C5").Select
End Sub
รบกวนอาจารย์แนะนำด้วยคะ
Attachments
Code VBA-Combobox6.xlsm
(35.19 KiB) Downloaded 51 times

Re: รบกวนสอบถามการเขียน code ใน combobox

#17

by snasui » Fri May 24, 2013 10:28 am

:D สำหรับ VBA แล้วต้องพยายามเขียนมาเอง ติดแล้วค่อยถามกันครับ

เพื่อความคุ้นเคยลองบันทึก Macro สำหรับการเขียนสูตร แล้วดูว่าได้ Code มาเป็นเช่นไร จากนั้นค่อยปรับใช้ครับ

Re: รบกวนสอบถามการเขียน code ใน combobox

#16

by natthaporn » Fri May 24, 2013 9:58 am

ดิฉันขอขอบคุณอาจารย์มากคะ ที่ให้ความรู้เพิ่่มเติม ถ้าดิฉันทดลองใช้วิธีที่อาจารย์แนะนำคือ ใช้ VBA ช่วยในการเขียนสูตรโดยตัด Indirect ออกไปแล้วใช้ A1 เป็นตัวแปรในการให้ชื่อชีทในสูตรแทน อาจารย์พอจะช่วยแนะนำการเขียน code สำหรับวิธีการนี้ได้ไหมคะ อยากได้เป็นความรู้เพิ่มเติมจริงคะ ดิฉันจะได้นำไปประยุกต์ใช้กับ file อื่น ๆ เพราะดิฉันมี file ที่ต้องดึงข้อมูลแบบนี้เป็นร้อย file เลยคะ

ขอบคุณคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#15

by snasui » Fri May 24, 2013 12:25 am

natthaporn wrote:ถ้านำ code vba มาใช้ดึงข้อมูลแทนการใช้สูตรจะเร็วกว่าหรือเปล่าคะ ดิฉันขอคำแนะนำจากอาจารย์ด้วยคะ
:D หากข้อมูลไม่เป็น Database ตามที่ถามมานี้โอกาสที่จะใช้ VBA แล้วเร็วเท่า Sumifs ยากมาก ไม่ต้องพูดถึงเร็วกว่าครับ

ข้อมูลที่จะนำมาทำรายงานควรจะเป็น Database คือเรียงลงไปด้านล่างเรื่อย ๆ ไม่ใช่เก็บเป็นชีท ๆ เมื่อเป็น Database เราสามารถใช้ PivotTable เข้ามาช่วยในการสรุปข้อมูลได้ในมิติต่าง ๆ ตามต้องการ

หากต้องการที่จะให้สูตรทำงานเร็วขึ้น ให้ใช้ VBA ช่วยในการเขียนสูตรโดยตัด Indirect ออกไปแล้วใช้ A1 เป็นตัวแปรในการให้ชื่อชีทในสูตรแทน เนื่องจาก Indirect เป็น Volatile Function ซึ่งถูกกระทบให้เปลี่ยนแปลงได้โดยง่าย แม้แค่เปลี่ยนความกว้างเซลล์ก็เกิดการคำนวณทุกครั้ง

Re: รบกวนสอบถามการเขียน code ใน combobox

#14

by natthaporn » Thu May 23, 2013 11:56 pm

อาจารย์คะ ดิฉันได้นำสูตรที่อาจารย์แนะนำไปใช้กับ file จริง ปรากฎว่า process ในการทำงานยังใช้เวลานานเหมือนเดิมคะ ดิฉันลองจับเวลาดูใช้เวลาประมาณ 5-6 นาที เพราะดิฉันได้เขียน code เพิ่มเข้าไปว่าเมื่อทำการเลือกเงือนไขแล้ว ให้ข้อมูลใน sheet "Report" copy paste value ไม่เช่นนั้นถ้ามีการเปลี่ยนแปลงแก้ไขข้อมูลใน sheet ที่เป็น data คือ sheet "COMA" , COMB, .... จะทำให้สูตรใน sheet "Report" วิ่งอยู่ตลอดเวลา
และอีกหนึ่งอย่างที่ดิฉํนคิดว่าทำให้ process ในการทำงานใช้เวลานานมาก เพราะ sheet "Report" มีจำนวน row ประมาณ 2500 row และ column ประมาณ 130 column
จริงแล้ว sheet "Report" เป็น sheet สำหรับคัดกรอกข้อมูลที่มาจาก sheet "COMA" , COMB, ....ซึ่งเป็น raw data ที่ download มาอีกที่หนึ่ง เพื่อที่จะเตรียมไว้เป็น data สำหรับดึงไปใช้งานอื่นต่อไปคะ
ถ้านำ code vba มาใช้ดึงข้อมูลแทนการใช้สูตรจะเร็วกว่าหรือเปล่าคะ ดิฉันขอคำแนะนำจากอาจารย์ด้วยคะ
ขอบคุณคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#13

by natthaporn » Thu May 23, 2013 7:00 pm

ได้ผลลัพธ์ตามที่ต้องการแล้วคะ ดิฉันจะลองนำไปปรับใฃ้กับ file จริงดูว่า process ของการทำงานเร็วกว่าเดิมหรือไม่ อย่างไรก็ตามจะแจ้งผลกับอาจารย์อีกครั้งหนึ่งคะ
ขอบขอบคุณมากคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#12

by snasui » Thu May 23, 2013 4:53 pm

:D การทำเช่นนั้นสามารถใช้สูตรมาช่วยได้ครับ

โดยกำหนดค่าให้กับ ComboBox Control ที่ B3, D3 โดยให้ Link ค่าไปที่ B1, D1 จากนั้นใช้สูตรเพื่อให้แสดงผลลัพธ์ตามค่าใน ComboBox ที่ A1, C1 ตามลำดับ

จากนั้นที่ A5 เขียนสูตร

Code: Select all

=SUMIFS(INDEX(INDIRECT("'"&$A$1&"'!Z3:AK1000"),0,MATCH($C$1,INDIRECT("'"&$A$1&"'!Z2:AK2"),0)),INDEX(INDIRECT("'"&$A$1&"'!B3:M1000"),0,MATCH($C$1,INDIRECT("'"&$A$1&"'!B2:M2"),0)),$B5,INDEX(INDIRECT("'"&$A$1&"'!N3:Y1000"),0,MATCH($C$1,INDIRECT("'"&$A$1&"'!N2:Y2"),0)),C$4)
Enter > Copy ไปยังเซลล์ที่เกี่ยวข้อง ดูตัวอย่างตามไฟล์แนบครับ
Attachments
Code VBA-Combobox3.xlsm
(35.62 KiB) Downloaded 36 times

Re: รบกวนสอบถามการเขียน code ใน combobox

#11

by natthaporn » Thu May 23, 2013 3:07 pm

จะเห็นได้ว่าจุดตัดที่ C7 ในชีท Report มีค่าเป็น 5 เกิดจาก B7 = ccc ตัดกับ C4 = A ซึ่งเกิดจาก
1. การเลือก DIVcombobox = COMA
2. การเลือก Mcombobox = Jan
ความหมายก็คือให้เลือกข้อมูลจาก sheet "COMA" ที่เดือน Jan ในที่นี้ก็คือ column "B,N,Z" โดยถ้า
B3:B50 มีค่า = ccc และ N3:N50 มีค่า = A ให้นำตัวเลขที่่ Z3:Z50 มารวมกัน แล้วส่งค่ากลับไปที่ sheet "Report" ที่มีจุดตัดจุดเดียวกัน ในที่นี้ก็คือ B7 ตัดกับ C4

ดิฉันไม่แน่ใจว่าอธิบายครบหรือเปล่าคะ เพราะดิฉันยังไม่ค่อยเก่งเรื่องการอธิบายที่จะสื่อถึงเรื่องการเขียน code คะ

ขอบคุณคะ

Re: รบกวนสอบถามการเขียน code ใน combobox

#10

by snasui » Thu May 23, 2013 11:55 am

:D จากไฟล์ที่แนบมาช่วยอธิบายว่า เซลล์ C7 ในชีท Report มีค่าเป็น 5 มีหลักการได้มาของข้อมูลอย่างไรครับ

Top