標題:
請問各位大神 這段VBA 比對有0開頭的文字如何比對的到?
[打印本頁]
作者:
jeffrey628litw
時間:
2019-12-24 18:33
標題:
請問各位大神 這段VBA 比對有0開頭的文字如何比對的到?
請問各位大神 這段VBA Module 8 比對有0開頭的文字如何比對的到?
1.這是從工作表 設比對條件清單 中 A 欄
比對工作表 OE No後資料 撈出
問題:0310480000 有 0在最前面的 會無法和工作表 設比對條件清單 A 欄 比對後出現在
這裡的A欄下面
2.這裡應該出現 比對後重複的 資料 0310480000
但是沒出現
請問 VBA Module 8 裡面 程式要如何修改呢?
[attach]31578[/attach]
設比對條件清單
[attach]31579[/attach]
VBA Module 8 程式碼:
Sub 開始比對不重複()
Dim t1
t1 = Timer '這是產生秒數的 MSG
'==============================================================
'以下為將 過濾單一儲存格雙條件重複清單先貼過來試跑看看
Dim Ar(32)
Sheets("設比對條件清單").Select
Sheets("設比對條件清單").Name = "Sheet1"
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[A2], .[A101].End(xlUp))
For i = 0 To 1
Ar(i) = a.Offset(, i).Value
Next i
d(a & "") = Ar
Next
End With
Range("a1").Parent.Name = "設比對條件清單"
Sheets("比對後重複清單").Select
Sheets("比對後重複清單").Name = "Sheet2"
'==============================================================
'刪除 D 欄為0時的儲存格公式資料
Range("D2").Select
For X = 1 To 1
For y = 2 To 101
If ActiveCell(y, X) = 0 Then
ActiveCell(y, X) = ""
Else
End If
Next y
Next X
'==============================================================
With Sheet2
For Each a In .Range(.[D2], .[D101].End(xlUp))
For Each ky In d.keys
If InStr(a, ky) > 0 Then a.Offset(, -3).Resize(, 1) = d(ky): Exit For
Next
Next
End With
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D101"), Type:=xlFillDefault
Range("D2:D101").Select
Range("D2").Select
Range("a1").Parent.Name = "比對後重複清單"
'==============================================================
Sheets("比對後重複清單").Select
ROW1 = Cells(Rows.Count, "C").End(3).Row
'下面3列程式是如果要撈出2欄以上資料需開放的程式碼
' If ROW1 > 2 Then
' Range(Cells(1, "C"), Cells(ROW1, "E")).Clear
' End If
'==============================================================
ROW1 = Cells(Rows.Count, "A").End(3).Row
arr = Range("A2:A" & ROW1)
ROW2 = Sheets("設比對條件清單").Cells(Rows.Count, "A").End(3).Row
'如果要撈出2欄以上資料需開放的程式碼,2欄 Range("A1:A" & ROW2) 要改成 Range("A1:B" & ROW2)
Sheets("設比對條件清單").Range("A1:A" & ROW2).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("A1:A" & ROW1), CopyToRange:=Range( _
"C1:C1"), Unique:=False
'上面的 "C1:C1" 為從資料庫撈出比對後資料,顯示在此工作表 C1:C1
'==============================================================
Sheets("比對後重複清單").Range("A:A").NumberFormatLocal = "@" '加入這一行, 設為[文字]格式
Sheets("比對後重複清單").Range("C:C").NumberFormatLocal = "@" '加入這一行, 設為[文字]格式
Sheets("比對後重複清單").Range("D:D").NumberFormatLocal = "@" '加入這一行, 設為[文字]格式
'==============================================================
Columns("C:C").ColumnWidth = 28
Columns("D:D").ColumnWidth = 32
'==============================================================
'以下是生成 不重複項目 的工作表
Sheets.Add After:=Sheets(Sheets.Count)
'Sheets(Sheets.Count).Name = "未比對到清單"
Columns("A:A").ColumnWidth = 28
Columns("B:B").ColumnWidth = 16
Cells(1, 3).Formula = "● 此是[未比對到]清單"
Cells(1, 3).Font.Color = RGB(43, 20, 134)
Cells(1, 3).Font.Bold = True
Cells(1, 6).Formula = "● 使用過後可刪除此工作表"
Cells(1, 6).Font.Color = RGB(128, 13, 32)
Cells(1, 6).Font.Bold = True
Sheets("設比對條件清單").Range("A1:A" & ROW2).Copy Range("A1")
For i = ROW2 To 2 Step -1
For j = 1 To UBound(arr)
If Cells(i, "A") Like arr(j, 1) Then
Rows(i).Delete
GoTo 1100
End If
Next
1100:
Next
'==============================================================
'以下為讓產生 工作表 不重複項目 的A1儲存格產生名稱
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
'======================================================
'以下為顯示VBA Run程式的時間
MsgBox "抓資料完成! " & Chr(10) & "使用時間:" & Round(Timer - t1, 2) & " 秒" & Chr(10) & "未比對到的資料,共計有" & " " & Application.CountA(ActiveSheet.Columns("A:A")) - 1 & " " & "筆"
'MsgBox "抓資料完成! " & Chr(10) & "使用時間:" & Round(Timer - t1, 2) & " 秒" 這是產生秒數的 MSG
'==============================================================
End Sub
檔案下載:[attach]31580[/attach]
作者:
jeffrey628litw
時間:
2019-12-25 18:49
回復
1#
jeffrey628litw
不好意思 檔案請改用這個試試看 會比較快 ,大家耶誕節快樂
檔案下載:[attach]31584[/attach]
作者:
jeffrey628litw
時間:
2019-12-26 17:11
不好意思,我發現在工作表 比對重複清單的A欄,經儲存格式改文字就可以了。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)