: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 แบบมีเงื่อนไขครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#1

Post by arampong »

กำลังหัดทำ VBA ครับรบกวนแนะนำเบื่องต้นให้หน่อยครับอาจารย์
ตอนนี้กำลังสับสนเรื่องโยนค่าไปอีก sheet ครับ

1.ที่ NUM1 ใน Sheet1 ให้ไปแสดง ที่ Sheet 2 ตามเงื่อนไขครับ และ ที่ NUM2 ใน Sheet1 ให้ไปแสดง ที่ Sheet 2 ตามเงื่อนไขครับ
2.นำค่าNum1 ไปวส่ในตาราง2 มีเงื่อนไขว่าให้เอาค่าที่เป็นแถบสีเหลืองใส่ก่อนหากค่าบวกกันแล้วได้ 10 หาก >= 10 ให้นำที่เหลือไปใส่ในตาราง1 ที่คอลั่ม num1
3.ค่าของ NUM2 ใส่ตาราง3 หากเกิน10ให้มาใส่ตาราง2 แทนเช่นกัน

รบกวนอาจารย์แนะนำก่อนเท่านี้ครับเดี๋ยวกระผมจะลองดัดแปลงทำต่อดูครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3693
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

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

#2

Post by puriwutpokin »

การใช้ VBA ต้องเขียนมาก่อนตามกฏของบอร์ดครับ ติดขัดแล้วมาถามใหม่ครับ
:shock: :roll: :D
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#3

Post by arampong »

เรียนอาจารย์ครับ ลองแกะจากกระทู้เก่า ได้ใช้ Vlookup แต่ลองเขียนตามตัวอย่างแล้วมันไม่ขึ้นอะไรเลยครับ
รบกวนช่วยดูให้หน่อยครับ กำลังหัดเขียนครับ และผมใช้ Vlookup กับการโยนค่าแบบนี้ถูกหรือไม่ครับ
ขอบคุณครับ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Dim rCheck As Range
Dim ColNUM1 As Integer
Dim ColNUM2 As Integer
Dim lng As Long
If Target.Column = 1 Then
With Sheets("Sheet2")
'ข้อมูลปลายทาง เอาค่า Dที่ sheet2 มาไว้ที่ J โดยที่

Set rCheck = .Range("H", .Range("K" & Rows.Count).End(xlUp))
End With
'เลือกข้อมูลต้นทางตั่งแต่ B2-E14
With Sheets("Sheet1")
Set Rng = .Range("B", .Range("E" & Rows.Count).End(xlUp))

End With
'เอาข้อมูลตำแห่ง NUM1 มาแสดง
ColNUM1 = 3

On Error Resume Next
lng = Application.CountIf(Rng.Resize(, 1), Target)

'วางข้อมูลที่จะแสดงที่ตำแหน่งที่3 คือช่อง J ใน sheet2
Target.Offset(0, 3) = Application.VLookup(Target, Rng, ColAmount, 0)

Else

End If
End Sub
You do not have the required permissions to view the files attached to this post.
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#4

Post by arampong »

ขออธิบายเพิ่มหน่อยครับ

ปกติครับอาจารย์ผมจะไปใช้Vlookup ที่Sheet2 เลยครับ
VLOOKUP($H3,'sheet2'!$B$2:$E$14,3,FALSE)

พอมาเขียน VBA ผมคิดว่าน่าจะเป็น Action เลยแล้วส่งค่าข้ามไป Sheet2 แทน เข้าใจถูกหรือไม่ครับ
แต่ถ้าเขียน VBA ที่ Sheet2 เหมือนเดิมจะใช้ Action อะไรครับเมื่อ Sheet1 มีการเปลี่ยนแปลงข้อมูล
แล้วให้ส่งค่ามา sheet2

ขอบคุณครับ
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#5

Post by eyepop99 »

arampong wrote:กำลังหัดทำ VBA ครับรบกวนแนะนำเบื่องต้นให้หน่อยครับอาจารย์
ตอนนี้กำลังสับสนเรื่องโยนค่าไปอีก sheet ครับ

1.ที่ NUM1 ใน Sheet1 ให้ไปแสดง ที่ Sheet 2 ตามเงื่อนไขครับ และ ที่ NUM2 ใน Sheet1 ให้ไปแสดง ที่ Sheet 2 ตามเงื่อนไขครับ
2.นำค่าNum1 ไปวส่ในตาราง2 มีเงื่อนไขว่าให้เอาค่าที่เป็นแถบสีเหลืองใส่ก่อนหากค่าบวกกันแล้วได้ 10 หาก >= 10 ให้นำที่เหลือไปใส่ในตาราง1 ที่คอลั่ม num1
3.ค่าของ NUM2 ใส่ตาราง3 หากเกิน10ให้มาใส่ตาราง2 แทนเช่นกัน

รบกวนอาจารย์แนะนำก่อนเท่านี้ครับเดี๋ยวกระผมจะลองดัดแปลงทำต่อดูครับ
ขอบคุณครับ
ขอโทษทีครับพอดียังไม่ค่อยเข้าใจเงื่อนไข
- ค่าที่เป็นแถบสีเหลือง (ควรใส่ตัวระบุมากกว่าสี เช่น ตัวเลขหรือตัวหนังสือ)
- ใส่ค่าที่เป็นแถบสีเหลือก่อน(ค่าที่มีตัวระบุตามข้อด้านบน) หากบวกกันแล้วได้ มากกว่าหรือเท่ากัน 10 ค่าไหน บวกกับอะไร
- ให้นำค่าสีเหลือ ไปใส่ในตาราง 2 num1 (sheet2) โดยใส่ช่องตามเงื่อนไข ช่อง Code ใช่หรือไม่ และ num0(sheet2) ไว้ใส่ค่าอะไร

Num2 (sheet1) ใส่ค่าในตาราง 3 ถ้าหากเข้าเงื่อนไข จะนำค่าไปใส่ในตาราง 1 ( ช่อง Num1 ถูกใช้ไปโดยเงื่อนไขของ num1 และ เหลือแต่ ช่อง num0(ตาราง1 sheet2 )
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#6

Post by arampong »

ขอบคุณครับอาจารย์

เรียนอาจารย์ ผมว่าผมค่อยๆไปดีกว่าครับ ผมเอาแค่เริ่มต้น
ส่งค่าที่กรอก sheet 1 ที่คอลัม Dไปใส่ที่ Sheet 2 ที่คอลัม J
ก่อนดีกว่าครับ อยากให้อาจารย์แนะนำแค่นี้ก่อนครับ
เดี๋ยวผมลองต่อยอดดู เพราะตอนนี้แค่เริ่มแบบนี้ยังไปไม่เป็นเลยครับ
เดี๋ยวพอตรงนี้ได้ ผมค่อยทำต่อหากติดจะกลับมาถามอาจารย์อีกครั้งครับ

ขอบคุณอีกครั้งครับ
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#7

Post by eyepop99 »

arampong wrote:ขอบคุณครับอาจารย์

เรียนอาจารย์ ผมว่าผมค่อยๆไปดีกว่าครับ ผมเอาแค่เริ่มต้น
ส่งค่าที่กรอก sheet 1 ที่คอลัม Dไปใส่ที่ Sheet 2 ที่คอลัม J
ก่อนดีกว่าครับ อยากให้อาจารย์แนะนำแค่นี้ก่อนครับ
เดี๋ยวผมลองต่อยอดดู เพราะตอนนี้แค่เริ่มแบบนี้ยังไปไม่เป็นเลยครับ
เดี๋ยวพอตรงนี้ได้ ผมค่อยทำต่อหากติดจะกลับมาถามอาจารย์อีกครั้งครับ

ขอบคุณอีกครั้งครับ
อ้างอิงจากโค๊ดที่มาในไฟล์แน๊บ
ปรับเป็น

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)

   
 If Not Intersect(Target, Range("D2:D14")) Is Nothing Then ' ถ้าข้อมูลในช่วงนี้เปลี่ยนให้ทำงาน
 
   Dim rsall As Range, rs As Range 'กำหนดตัวแปรในรูปแบบ array และตัว วิ่งในarray
   Dim rtall As Range, rt As Range 'กำหนดตัวแปรในรูปแบบ array และตัว วิ่งในarray
   With Sheets("sheet2")
        Set rsall = .Range("H3", .Range("H15")) ' look up value
    End With
    With Sheets("sheet1")
         Set rtall = .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
    
End If
   
End Sub
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#8

Post by arampong »

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

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

ตอนนี้ต้องขอขอบคุณอาจารย์มากๆอีกครั้งครับ
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#9

Post by arampong »

สอบถามเพิ่มเติมครับอาจารย์
จาก 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


ขอบคุณอาจารย์อีกครั้งครับผม
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#10

Post by snasui »

:D แนบไฟล์ที่ได้ทำการ Update Code มาแล้วด้วยจะได้ช่วยกันทดสอบได้ครับ
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#11

Post by arampong »

ขอบคุณครับอาจารย์
ผมได้แนบไพล์มาแล้วครับ ต้องขออภัยที่ช้าครับเมื่อวานไปต่างจังหวัดมาครับ
ที่ติดเบื่องต้นตอนนี้มี 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 ไปอีกชุดใช่หรือไม่ครับแล้วเปลี่ยนคอลัมที่ต้องการเอา

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#12

Post by snasui »

: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:
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#13

Post by arampong »

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

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

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

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

ขอบคุณอาจารย์ครับเดี๋ยวผมจะกลับมาถามอีกครั้งตอนที่เขียนเงื่อนไขได้แล้วครับ หรือหากอาจารย์แนะนำเพิ่มก่อนก็ขอบคุณครับ
ขอบมากคุณครับ
You do not have the required permissions to view the files attached to this post.
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#14

Post by eyepop99 »

ผมอาจจะไม่ค่อยถนัด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
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#15

Post by arampong »

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

หากมีความคืบหน้าจะกลับมาโพสต์ต่อจนเสร็จครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#16

Post by eyepop99 »

เหมือนผมจะงงโจทย์5555
รออาจารท่านอื่นๆ ต่อไปฮะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#17

Post by snasui »

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

นอกจากนี้ช่วยทำตัวอย่างข้อมูลและผลลัพธ์ที่ต้องการ ของแต่ละกรณีที่เข้าเงื่อนไขนั้น ๆ ประกอบมาพอสังเขปด้วยจะได้ดูร่วมไปกับ Flow จะได้เข้าใจได้ง่ายขึ้นครับ
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#18

Post by arampong »

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

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

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

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

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
arampong
Member
Member
Posts: 31
Joined: Wed Jul 08, 2015 11:46 am

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

#19

Post by arampong »

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

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

ขอบคุณครับ
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#20

Post by eyepop99 »

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

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