snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
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
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