: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

สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

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: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#27

by eyepop99 » Fri Jan 26, 2018 4:23 pm

arampong wrote: Fri Jan 26, 2018 3:46 pm เรียนอาจารย์ ติดครับเรื่องตัวเลขตอนโยนค่าครับ
พอผมเปลี่ยนเป็นเลข 4 ทั้งระบบแล้วให้มันโยนค่าข้ามมาได้ 4,4,4 ทั้งๆที่บอกค่าห้ามเกิน 10 ครับ
ผมจะทำดัก Code ยังไงครับ และอีกอย่างถ้าจะให้มันเอามาแค่ 2 หรือไปหาช่องอื่นก่อนว่ามีค่าไหนที่มาบวกแล้วเท่ากับ 10 อยู่่ให้เอามารวมก่อน
ผมจะทำได้อย่างไรครับ

มาตายตอนจบ ฮ่าๆๆ ขอบคุณอีกครังครับ
ลองปรับตามนี้ครับ
ปล. ตามที่ปรับแก้ จะไม่สามารถเลือกตัวที่ได้ 10 พอดีมา เช่น เติม 1 แล้วเท่ากับ 9 จะไม่หยิบ2มาเติมจนครบ10 ถึงแม้ว่า มี 2 อยู่ก็ตามแต่ถ้ามี 1 อีก1ตัวจะหยิบ 1 มาใส่จนครบ10 ( ถ้าตัวเลข 1 อยู่ก่อน 2 และผลรวมได้ 9 พอดี )

Code: Select all

Sub Button()
Dim rsall As Range, rs As Range
Dim rtall_set As Range, rt_set As Range
Dim rtall_pc As Range, rt_pc As Range
Dim sum_set As Integer
Dim sum_all As Integer

With Sheets("Sheet2")
        Set rsall = .Range("H3", .Range("H15")) ' look up value
    End With
With Sheets("Sheet1")
         Set rtall_set = .Range("B10", .Range("B15")) ' data for lookup
         Set rtall_pc = .Range("B3", .Range("B9"))
    End With
    
  sum_set = 0
  sum_all = 0
  
  For Each rt_set In rtall_set 'sheet2
        For Each rs In rsall 'sheet1
   With Sheets("sheet2")
               sum_set = WorksheetFunction.Sum(.Range("J10:J15"))
               End With
                  If (rt_set.Value) = (rs.Value) And sum_set < 10 And rt_set.Offset(0, 2).Value + sum_set <= 10 Then

              rs.Offset(0, 2).Value = rt_set.Offset(0, 2).Value ' (data sheet1 lookup sheet2 ?????H ???????? 2 ????????????????? J)
              With Sheets("sheet2")
               sum_set = WorksheetFunction.Sum(.Range("J10:J15"))
               End With
            ElseIf (rt_set.Value) = (rs.Value) Then
              rs.Offset(0, -3).Value = rt_set.Offset(0, 2).Value
            
            End If
        Next rs
Next rt_set

    
For Each rt_pc In rtall_pc
    For Each rs In rsall
     With Sheets("sheet2")
               sum_all = WorksheetFunction.Sum(.Range("J3:J15"))
               End With
    If (rt_pc.Value) = (rs.Value) And sum_all < 10 And sum_all + rt_pc.Offset(0, 2).Value <= 10 Then
          
         rs.Offset(0, 2).Value = rt_pc.Offset(0, 2).Value
        With Sheets("sheet2")
               sum_all = WorksheetFunction.Sum(.Range("J3:J15"))
     End With
    
    ElseIf (rt_pc.Value) = (rs.Value) Then
        
       rs.Offset(0, -3).Value = rt_pc.Offset(0, 2).Value

    End If
    Next rs
Next rt_pc
Sheets("sheet2").Select

End Sub


Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#26

by arampong » Fri Jan 26, 2018 3:46 pm

เรียนอาจารย์ ติดครับเรื่องตัวเลขตอนโยนค่าครับ
พอผมเปลี่ยนเป็นเลข 4 ทั้งระบบแล้วให้มันโยนค่าข้ามมาได้ 4,4,4 ทั้งๆที่บอกค่าห้ามเกิน 10 ครับ
ผมจะทำดัก Code ยังไงครับ และอีกอย่างถ้าจะให้มันเอามาแค่ 2 หรือไปหาช่องอื่นก่อนว่ามีค่าไหนที่มาบวกแล้วเท่ากับ 10 อยู่่ให้เอามารวมก่อน
ผมจะทำได้อย่างไรครับ

มาตายตอนจบ ฮ่าๆๆ ขอบคุณอีกครังครับ
Attachments
T1.xlsm
(83.62 KiB) Downloaded 19 times

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#25

by arampong » Sat Dec 09, 2017 8:58 am

จบงานแล้วครับ
ขอบคุณอาจารย์ eyepop99 และท่านอื่นๆด้วยครับ

ได้ลองเขียน worksheet change มีผลจริงๆเมื่อข้อมูลในการประมวลผลเยอะขึ้นครับ
จึงเปลี่ยนมาทำตามอาจารย์ eyepop99 ครับ

ผมไม่โพสต์ ตัวที่เลร็จแล้วน่ะครับ เพราะได้ทำตามอาจารย์ eyepop99 ทุกอย่างเลย
แค่เพื่มในส่วนของตารางมาหลายๆ ตารางเท่านั้นครับ แล้วค่อยสั่ง Run Macro ทีเดียวพร้อมกัน

ขอบคุณมากครับ :thup:

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#24

by eyepop99 » Thu Dec 07, 2017 5:04 pm

จากตัว VBA ที่เขียนขึ้น
ถ้าใช้ worksheet change ทุกๆ ครั้งที่ range เปลี่ยน จะเกิดการคำนวนและการส่งค่า
ใส่ 10 เท่ากับรัน โปรแกรม 10 ครั้งซึ่งอาจจะทำให้เกิดความล้าช้า ได้ครับ
เหตุผลว่าทำไมถึงมีการ ใช้ Function แทน

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#23

by arampong » Thu Dec 07, 2017 4:54 pm

ขอขอบคุณอาจารย์มากครับ
จากการทดสอบ โดยการสร้างปุ่มรับค่า Function แทน ผลได้ครับตามอาจารย์แนะนำ
แต่ผมลองเอาไปใช้ ใช้ worksheetchange มันแปลกๆอยู่ครับ
ยังไงแล้วผมจะลองเปลี่ยนมาเป็นแบบ Function ก่อนตามอาจารย์เพื่อทำส่วนต่อไปดูครับ

ขอขอบคุณอาจารย์และทุกๆท่านอย่างสูง ที่ทำให้งาน VBA Excel ครั้งแรกของผมใกล้ความจริงแล้วครับ
ยังไงหากเสร็จแล้ว หรือติดส่วนต่อไปจะกลับมาโพสต์ต่อ หรือแจ้งจบงานครับ
ขอบคุณครับ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#22

by eyepop99 » Thu Dec 07, 2017 4:01 pm

โค๊ดที่แน๊บผมปรับเป็น function เพื่อใช้ run แทนการใช้ worksheetchange นะครับ
ปรับโค๊ด เป็น

จากที่ลอง code ใช้งานได้ตามต้องการแล้วนะครับ
ส่วนการลบข้อมูลเก่าออก และ ความต้องการอื่นๆ ค่อยสอบถามกันต่อไปครับ

Code: Select all


Sub runfn()
 

Dim rsall As Range, rs As Range
Dim rtall_set As Range, rt_set As Range
Dim rtall_pc As Range, rt_pc As Range
Dim sum_set As Integer
Dim sum_all As Integer

With Sheets("Sheet2")
        Set rsall = .Range("H3", .Range("H15")) ' look up value
    End With
With Sheets("Sheet1")
         Set rtall_set = .Range("B10", .Range("B15")) ' data for lookup
         Set rtall_pc = .Range("B3", .Range("B9"))
    End With
    
  sum_set = 0
  sum_all = 0
  
  For Each rt_set In rtall_set 'sheet2
        For Each rs In rsall 'sheet1
                  
                  If (rt_set.Value) = (rs.Value) And sum_set < 10 Then

                
              rs.Offset(0, 2).Value = rt_set.Offset(0, 2).Value ' (data sheet1 lookup sheet2 คอลัมH ไปทางขวา 2 ช่องหรือที่คอลั่ม J)
              With Sheets("sheet2")
               sum_set = WorksheetFunction.Sum(.Range("J10:J15"))
               End With
            ElseIf (rt_set.Value) = (rs.Value) Then
              rs.Offset(0, -3).Value = rt_set.Offset(0, 2).Value
            
            End If
        Next rs
Next rt_set

    With Sheets("sheet2")
               sum_all = WorksheetFunction.Sum(.Range("J3:J15"))
     End With
    
For Each rt_pc In rtall_pc
    For Each rs In rsall
    If (rt_pc.Value) = (rs.Value) And sum_all < 10 Then
          
         rs.Offset(0, 2).Value = rt_pc.Offset(0, 2).Value
        With Sheets("sheet2")
               sum_all = WorksheetFunction.Sum(.Range("J3:J15"))
     End With
    
    ElseIf (rt_pc.Value) = (rs.Value) Then
        
       rs.Offset(0, -3).Value = rt_pc.Offset(0, 2).Value

    End If
    Next rs
Next rt_pc
Sheets("sheet2").Select

End Sub


Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#21

by arampong » Thu Dec 07, 2017 12:08 pm

ตอบ จากคุณ eyepop99 ถูกครับผม
ขอบคุณครับ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#20

by eyepop99 » Thu Dec 07, 2017 11:47 am

ตามความเข้าใจ
1. นำค่าset มาวางที่ตาราง 2 จนครบ 10
2. พอครบ10แล้ว นำค่าsetที่เกิน มาใส่ ที่ ตาราง 1 ตามcode ที่ตรงกัน
3. แต่ถ้าค่าทั้งหมดรวมกันไม่ถึง 10 ให้ใส่ ตาราง 2 ทั้งหมด

---------------------------------------------------------------
อีกกรณีหนึ่งคือ
ถ้าsetรวมกันไม่ถึง10 ให้ เอาset มาวางให้ครบก่อน แล้วเอาค่า pc ใส่จนกว่าจะครบ10
เมื่อครบ10แล้ว ให้นำค่าที่เหลือไปใส่ที่ ตาราง1ตาม code ที่ตรงกัน

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#19

by arampong » Thu Dec 07, 2017 11:46 am

1.ผลลับของตาราง 1 จะให้เงื่อนไขอะไรให้เช็คว่าขอมูลที่จะเอาไปใส่ในตาราง1 ต้องไม่มีใน J ดังผลลัพธ์ในภาพที่
(Flowsและผลลัพธ์)

จากข้อ1. ที่สอบถามครับผมพอจะคิดได้ว่าต้องเอาค่า Sheet1 คอลั่ม D3:D15 - Sheet2 คอลั่ม J3:J15 ถ้ามีค่ามากว่า >0
ให้สามารถเอาค่าไปใส่ที่Sheet2 ตาราง1 คอลั่ม E3:E15
คือผมจะเขียน Code - กันยังไงครับ (IF Range-Range > 0 then)

ขอบคุณครับ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#18

by arampong » Thu Dec 07, 2017 8:36 am

ขอบคุณครับทุกๆท่าน
อาจารย์ครับผมได้แบ่งเงื่อนไขออกเป็น 2 ช่วงครับเพื่อจะได้เคลียร์เป็นช่วงๆครับ
1.ผมได้แยกไว้เป็นสีเหลือง กับสีเขียว เพื่อแยกเงื่อนไขหลักออกเป้น 2 ส่วนที่ (Flowsและผลลัพธ์) ครับ
2.ผมได้ทำผลลัพธ์ตามที่อาจารย์ไว้แจ้งครับ (Flowsและผลลัพธ์ จะอยู่ล่างๆ sheet หน่อยครับ)

ตอนนี้ผมเริ่มทำในส่วนแรกคือ เช็ค SumIF ที่คอลั่ม J ได้แล้วครับตาม File ที่แนบมาครับ แต่ติดที่

1.ผลลับของตาราง 1 จะให้เงื่อนไขอะไรให้เช็คว่าขอมูลที่จะเอาไปใส่ในตาราง1 ต้องไม่มีใน J ดังผลลัพธ์ในภาพที่
(Flowsและผลลัพธ์)

2.เมื่อลบข้อมูลที่ Sheet1 ที่คีย์เข้าไป ทำไมที่ (Sheet2 ตาราง1 คอลั่ม NUM1) ไม่ลบด้วยครับ

ขอบคุณครับ
Attachments
T1.xlsm
(77.13 KiB) Downloaded 26 times

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#17

by snasui » Wed Dec 06, 2017 7:43 pm

:D ภาพทีแนบมามีตัวอักษรเล็กมาก ลองแนบมาในไฟล์ Excel เพื่อจะได้ดูไดสะดวกครับ

นอกจากนี้ช่วยทำตัวอย่างข้อมูลและผลลัพธ์ที่ต้องการ ของแต่ละกรณีที่เข้าเงื่อนไขนั้น ๆ ประกอบมาพอสังเขปด้วยจะได้ดูร่วมไปกับ Flow จะได้เข้าใจได้ง่ายขึ้นครับ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#16

by eyepop99 » Wed Dec 06, 2017 4:39 pm

เหมือนผมจะงงโจทย์5555
รออาจารท่านอื่นๆ ต่อไปฮะ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#15

by arampong » Wed Dec 06, 2017 1:27 pm

ขอบคุณอีกท่านครับ
ผมจะลองทำตามทั้งสองท่านดูครับ
เบื่องต้นผมทำ Flow ให้ทุกท่านได้ดูตรงเงื่อนไขก่อนเพราะผมเขียนๆก็ลืมเงื่อนไขเหมือนกัน ฮ่าๆๆ
กลัวท่านอาจารย์และทุกท่านที่อยากช่วยสับสน เลยตัดสินใจเขียน Flow เบื่องต้นตามเอกสารแนบครับ

หากมีความคืบหน้าจะกลับมาโพสต์ต่อจนเสร็จครับ
ขอบคุณครับ
Attachments
FlowSumif.PNG
FlowSumif.PNG (67.22 KiB) Viewed 487 times

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#14

by eyepop99 » Wed Dec 06, 2017 11:40 am

ผมอาจจะไม่ค่อยถนัดcode เท่าไหร่
ขออนุญาต ไกด์แนวคิดเบื้องต้น จากไฟล์ที่แน๊บมาล่าสุด
ผิดตรงที่ใช้ function sum ต้องใช้ function sumif
การกำหนดarray range จะกำหนดในรูปแบบ "cell1"(cellเริ่ม) & "cell5"(cellสุดท้ายของarray) sumif(arraysumrange,arraycriteria,criteria)
โดยผลลัพธ์ที่ตรวจสอบนั้นมี 2 ค่า คือ 1.sum ถ้าเป็น PC 2.sum ถ้าเป็น Set
แล้วนำผลลัพธ์ที่ได้จากการ sumif มาตรวจสอบ

Code: Select all

if pc >= 10 then
'Copy value1 to destination1
else
'Copy value1 to destination2
end if
if set >= 10 then
'Copy value1 to destination1
else
'Copy value1 to destination2
end if

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#13

by arampong » Wed Dec 06, 2017 7:39 am

ขอบคุณอาจารย์ครับ
รออาจารย์แนะนำอยู่ครับ ได้ไอเดียตามอาจารย์แนะนำแล้วครับ เดี๋ยวไปเขียนเพิ่มแล้วจะกลับมาโพสต์ต่อครับ

ตอบอาจารย์ครับ
Unit มีแค่ 2 หน่วยครับSET และ PC ให้พิจารณาเอา Set ลงในตารางทางขวาก่อนเมื่อผลรวมได้ 10 จึงเอาที่เหลือไปที่ตารางทางซ็าย
หาก Set ไม่ถึง 10 ให้เอา PC รวมกับ Set ได้ให้ครบ 10 แล้วเอาที่เหลือไปโชว์ทางซ้ายของอีกตารางตามตัวอย่างครับ

ซึ่งตอนนี้เงื่อนไขผมลองดูหากคีย์ตัวเลขที่ Sheet1 ที่ D3:D9 ค่าของ PC ก่อน D10:D15 ค่าของ SETถ้าsum เฉยๆมันจะเอาค่าของที่คีย์ก่อนไปใส่
และพอใส่ที่ตาราง2 แล้วมันก็ยังแสดงของค่าที่ใช้ไปแล้วที่ตาราง 1 อีก เงื่อนไขตรงนี้ยากมากครับก็เลยไปไม่ถูกครับ
หากอาจารย์แนะนำได้อีกรบกวนด้วยครับ ผมแนบตัวล่าสุดมาด้วยเผื่อมีคนช่วยด้วยครับ

ส่วนกฎข้อ 5 ต้องขอประทานโทษทุกท่าน ณ ที่นี้ด้วยครับ ที่ไม่ชัดเจนเรื่องโค๊ด
เนื่องจากพึ่งหัดงมๆ เกี่ยวกับ VBA เลยตัดสินใจคัดลอกมาทั้งหมด ให้อาจารย์ช่วยแนะนำครับ

ขอบคุณอาจารย์ครับเดี๋ยวผมจะกลับมาถามอีกครั้งตอนที่เขียนเงื่อนไขได้แล้วครับ หรือหากอาจารย์แนะนำเพิ่มก่อนก็ขอบคุณครับ
ขอบมากคุณครับ
Attachments
TTT.xlsm
(30.3 KiB) Downloaded 18 times

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#12

by snasui » Wed Dec 06, 2017 7:04 am

:D ค่อย ๆ ถามตอบกันไปให้ผ่านทีละเรื่องครับ

ที่แจ้งมาว่าเกิน 10 หรือไม่นั้น พิจารณาจาก Unit ในคอลัมน์ A ใช่หรือไม่ครับ :?:

หากใช่ก็ต้องสร้างตัวแปรที่ใช้ตรวจสอบ โดยตัวแปรนั้นใช้รวมค่าเฉพาะที่ต้องการ สามารถใช้ Sumif เช่น x = application.worksheetfunction.sumif(...) มาช่วยได้

เมื่อได้ค่า x มาแล้วค่อยนำมาตัดสินใจ เช่นด้านล่าง

Code: Select all

if x >= 10 then
'Copy value1 to destination1
else
'Copy value1 to destination2
end if
และดูเหมือนว่าจะพิจารณาจาก Unit ที่เป็น SET ก่อนด้วย มีหลักการพิจารณาอย่างไรว่าต้องใช้ Unit ใดก่อนหลังและมีกี่ Unit พิจาณาเรียงลำดับกันอย่างไรครับ

สำหรับการโพสต์ Code ลงในช่องความเห็นกรุณาอ่านกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#11

by arampong » Mon Dec 04, 2017 7:25 am

ขอบคุณครับอาจารย์
ผมได้แนบไพล์มาแล้วครับ ต้องขออภัยที่ช้าครับเมื่อวานไปต่างจังหวัดมาครับ
ที่ติดเบื่องต้นตอนนี้มี 4 ส่วนใหญ่ๆ คือดังนี้ครับ

1.ข้อมูล Sheet1 ที่คอลั่ม D วิ่งไปที่ J แล้ว แต่เมื่อเข้าเงื่อนไขเกิน 10 ดันไปโพล่ตรงตาราง1 คอลั่ม D แต่ความจริงต้องโพล่ที่ ตาราง1 คอลั่ม E
2.ข้อมูลที่เกินมันโพล่ไปทั้งหมด แทนที่จะเอาเฉพาะตัวที่เกิน 10 มาหลังสุด
3.ตอนนี้ผลลองเฉพาะผลรวมให้ได้ก่อน แต่ผมต้องหาผลรวมของช่วงที่ A=set ก่อน หากไม่เกิน 10 ค่อยไปเอาช่วง A=PC มาไว้ที่ตารางยังไงครับ
4.แล้วถ้าผมจะเอาค่าของ Num2 คอลั่ม E ไปไว้ที่ตาราง3 คอลั่ม P และถ้าเกินให้ไปที่ตาราง2 คอลั่ม K ผมต้อง คัดลอก Code ไปอีกชุดใช่หรือไม่ครับแล้วเปลี่ยนคอลัมที่ต้องการเอา

ขอบคุณครับ
Attachments
TTT.xlsm
ตัวอย่างที่เขียนไว้แล้วติดครับ
(28.17 KiB) Downloaded 27 times

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#10

by snasui » Sun Dec 03, 2017 5:00 pm

:D แนบไฟล์ที่ได้ทำการ Update Code มาแล้วด้วยจะได้ช่วยกันทดสอบได้ครับ

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#9

by arampong » Sat Dec 02, 2017 9:19 am

สอบถามเพิ่มเติมครับอาจารย์
จาก Code ผมจะทำเพิ่มในส่วนของส่งข้อมูลจาก Sheet1 ที่ Num2 ไปตารางที่3 ในSheet2ด้วย
ผมก็เลยทำมาอีกแถวแบบนี้ถูกหรือไม่ครับ แล้วพอ Run แล้วไม่มีอะไรเกิดขึ้นเลยครับ

สอบถามเพิ่มเติมเงื่อนไขครับ
-แล้วถ้าผมจะเช็คผลรวมของแถว D และ E ที่ sheet1 ก่อนว่าเกิน 10 หรือเปล่าจะ Sumif ตรงส่วนไหนครับ
คือมันมีเงื่อนไขแบบนี้ครับ
1.ที่ Sheet1 ให้เอาค่าที่คอลั้ม D ไปใส่โดย ให้นำค่าที่คอลั่ม A=SET และผลรวมของSetในคอลั่มDไม่เกิน 10
ไปใส่ก่อนที่ Sheet2 ตาราง2 คอลั่ม J หากใส่ค่าเกิน10 มาเมื่อไหร่ให้เอาไปใส่ในตาราง1 ที่คอลั่ม E ทั้งหมด
และส่วนของ A=PC เอาค่าไปใส่ทีหลังครับ หลังจากที่ A=Set ไม่เท่ากับ 10 ค่อยเอาไปเพิ่ม และถ้าเพิ่มครบ 10 แล้วค่อยเอาที่เหลือไป
ไว่ที่ตาราง1 คอลั่ม E ครับ และหากผลรวมที่ A=SET ไม่ถึง 10 ให้ใส่แค่นั้นครับ

2.ส่วนของ ค่า E ที่ Sheet1 ก็เหมือนกันครับแต่ E ไปใส่ที่ตาราง 3 คอลั่ม P หากผลรวมเกิน10 ก็ให้ไปใส่ที่ตาราง2 ที่คอลั่ม K
โดยเงื่อนไขเหมื่อนคำถามข้อ1 ครับ
ขอบคุณครับ



Dim rsall As Range, rs As Range '??????????????????? array ?????? ??????array
Dim rtall As Range, rt As Range '??????????????????? array ?????? ??????array
Dim rsall2 As Range, rs2 As Range
Dim rtall2 As Range, rt2 As Range


With Sheets("sheet2")
Set rsall = .Range("H3", .Range("H15")) ' look up value
Set rsall2 = .Range("N3", .Range("P15")) ' look up value

End With
With Sheets("Sheet1")
Set rtall = .Range("b2", .Range("b14")) ' data for lookup
Set rtall2 = .Range("b2", .Range("b14")) ' data for lookup
End With
For Each rt In rtall
For Each rs In rsall
If (rt.Value) = (rs.Value) Then
rs.Offset(0, 2).Value = rt.Offset(0, 2).Value ' data ???lookup ??? ( data for lookup)
End If
Next rs
Next rt


For Each rt2 In rtall2
For Each rs2 In rsall2
If (rt2.Value) = (rs2.Value) Then
rs2.Offset(0, 3).Value = rt2.Offset(0, 3).Value ' data ???lookup ??? ( data for lookup)
End If
Next rs2
Next rt2


End If

End Sub


ขอบคุณอาจารย์อีกครั้งครับผม

Re: สอบถาม VBA ส่งข้อมูลข้าม sheet แบบมีเงื่อนไขครับ

#8

by arampong » Fri Dec 01, 2017 4:23 pm

ขอบคุณมากๆเลยครับ

จากการทดสอบที่อาจารย์แนะนำมาผ่านครับ
ผมจะไปต่อยอดจากอาจารย์ โดยเอาเงื่อนไขเข้ามาผูกครับ
หากผมติดตรงไหนอีกคงต้องรบกวนอาจารย์อีกครั้งครับ

ตอนนี้ต้องขอขอบคุณอาจารย์มากๆอีกครั้งครับ

Top