snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub RetriveBkIndex()
Dim sh As Worksheet 'Each sheet in workbook
Dim rAll As Range 'All range in each sheet
Dim rs As Range 'Each cell in rAll
Dim rt As Range 'Last cell in sheet "All"
Dim rtAll As Range 'Booking Index in sheet "All"
For Each sh In Worksheets
If sh.Name <> "All" Then
Set rAll = sh.Range("C6", sh.Range("C" & Rows.Count).End(xlUp))
For Each rs In rAll
With Sheets("All")
Set rtAll = .Range("D8", .Range("D" & Rows.Count).End(xlUp))
Set rt = .Range("D" & Rows.Count).End(xlUp).Offset(1, 0)
End With
If Application.CountIf(rtAll, rs) = 0 Then rt = rs.Value
Next rs
End If
Next sh
End Sub
Private Sub btnTransfer_Click()
Dim sh As Worksheet 'Each sheet in workbook
Dim rAll As Range 'All range in each sheet
Dim rs As Range 'Each cell in rAll
Dim rt As Range 'Last cell in sheet "All"
Dim rtAll As Range 'Booking Index in sheet "All"
Dim i As Integer 'Number of item.
For Each sh In Worksheets
If sh.Name <> "All" Then
Set rAll = sh.Range("B6", sh.Range("B" & Rows.Count).End(xlUp))
For Each rs In rAll
With Sheets("All")
Set rtAll = .Range("D8", .Range("D" & Rows.Count).End(xlUp))
Set rt = .Range("D" & Rows.Count).End(xlUp).Offset(1, 0)
End With
If Application.CountIf(rtAll, rs) = 0 Then
i = i + 1
rs.Resize(1, 5).Copy
rt.PasteSpecial xlPasteValues
rt.Offset(0, -1) = i
End If
Next rs
End If
Next sh
End Sub
ถ้า เอา i ไว้ใน if มันก็จะนับให้เฉพาะตอน เข้าเงื่อนไขสิครับ แต่ถ้ามันเป็น index ที่เคยบันทึกไปแล้ว มันก็ข้ามเงื่อนไข อย่างนี้ น่าจะเอา i ไว้ข้างนอกปะครับ