返回列表 上一主題 發帖

[發問] 對比不相同的資料

回復 9# Hsieh

謝謝Hsieh版主幫我解決困擾了。

TOP

回復 10# GBKEE
沒有正規方法
當我發現整欄會被認為有資料時
而且CODE函數讀取內容卻會出錯,就知道含有不可見字元
要清除它不是用delete就是用資料剖析最快
學海無涯_不恥下問

TOP

回復 12# Hsieh
謝謝Hsieh板主的解說
當我執行你的程式後的結果 不是預期的 只發現Ctrl+方向鍵有異 但沒有朝不可見字元方向想
可是它好像只要用資料剖析就可以恢復正常 卻找不出是那一個不可見字元

TOP

回復 4# sping
純參考
用Find方法
   
  1. Sub 同工作表不同欄位之比對()
  2. Dim Rng(1 To 2) As Range, F As Range, d1 As Object, d2 As Object, A As Range
  3. Set d1 = CreateObject("Scripting.Dictionary")
  4. Set d2 = CreateObject("Scripting.Dictionary")
  5. d1("相同Name") = ""
  6. d2("不相同Name") = ""
  7. With Sheets("同工作表之比對")
  8.     Set Rng(1) = .Range("A3", .Range("A" & Rows.Count).End(xlUp))
  9.     Set Rng(2) = .Range("B3", .Range("B" & Rows.Count).End(xlUp))
  10.     For Each A In .Range(Rng(1).Address & "," & Rng(2).Address)
  11.         If A <> "" Then
  12.             Set F = Rng(IIf(A.Column = Rng(1).Column, 2, 1)).Find(A.Text, lookat:=xlWhole)
  13.             If Not F Is Nothing Then
  14.                 d1(A.Text) = ""
  15.             Else
  16.                 d2(A.Text) = ""
  17.             End If
  18.         End If
  19.     Next
  20. End With
  21. With Sheets("同工作表之比對")
  22.     .Range("c3:d65536") = ""
  23.     .[c2].Resize(d1.Count, 1) = Application.Transpose(d1.keys)
  24.     .[d2].Resize(d2.Count, 1) = Application.Transpose(d2.keys)
  25. End With
  26. End Sub
複製代碼

TOP

回復 14# GBKEE


    謝謝你熱心幫忙修改,你和hsieh版主的程式碼對我都很有幫助,我會留下來研究。

TOP

如果是不同的excel呢?怎樣寫?c:\....?

TOP

Sub sample()

Dim LastRec As Integer
Dim j As Integer
Dim i As Integer
Dim l As Integer
Dim data() As Range
l = 1

Worksheets("Sheet1").Range("A1").Select
ActiveCell.End(xlDown).Select
     LastRec = ActiveCell.Row
     

For j = 1 To LastRec

i = Application.Match(Sheet1.Cells(1, j), "='C:\Users\Desktop\[1.xlsx]Sheet1'!.Range("A:A"), 0)

If Sheet1.Cells(i, 2).Value <> Sheet2.Cells(i, 2).Value Then

Sheet1.Cells(i, 2).Value = Sheet2.Cells(i, 2).Value
Sheet1.Cells(i, 2).Interior.Color = RGB(255, 200, 255)
End If

Next j

End Sub
請問i = Application.Match(Sheet1.Cells(1, j), "='C:\Users\Desktop\[1.xlsx]Sheet1'!.Range("A:A"), 0)這句哪裡出錯?我想在一個excel內找出桌面的另一個(1.xlsx) excel內相同的名稱,如果他們的值不同就改成另一個(1.xlsx) excel內的值

TOP

另外請問vba可否讓一個excel 可以同時讓多位用家使用,輸入資料及儲存?

TOP

不同檔案間做比對就必須兩個檔案都在開啟狀態下讀取資料比對
不妨將檔案上傳以便了解資料結構
學海無涯_不恥下問

TOP

回復 20# Hsieh


    要同時打開沒問題,但如何寫?
我有見過有人寫的vba不用打開兩個檔案,就可以vlookup相同名,然後就同名的相應資料傳回在當前的sheet內同名的相對位置

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題