日後有任何進度都會上來更新直到完成
12/12 更新
將範例檔案更新
另外似乎可以用excel內既有的條件格式處理的樣子..?
我好像把自己局限在一定要用VBA的思維了
但事實上只要結果可以出來即可
VBA與條件格式我都在挑戰中
12/7 更新
很抱歉在敘述上造成諸多不便
聽取前輩意見放置上檔案供參考
如有不足之處還請提出,還請海涵
Google雲端
12/6 更新
我找到可以重新排序抬頭後再重新比對資料的程式碼
Sub Reorder_Columns()
Dim ColumnOrder As Variant, ndx As Integer
Dim Found As Range, counter As Integer
ColumnOrder = Array("Header 1", "Header 2", "Header 3", "Header 4", "Header 5", "Header 6")
counter = 1
'關掉畫面上的資料的更新:
'執行巨集之前,先把畫面更新關掉,可以比較快速跑完巨集,不過資料量不大
'的時候,也沒必要就是了,記得程式碼的最後要把他再打開
Application.ScreenUpdating = False
For ndx = LBound(ColumnOrder) To UBound(ColumnOrder)
'從左上角Rows("1:1")開始尋找,找字串ColumnOrder(ndx),找儲存格的數值符合的LookIn:=xlValues
'一字不漏比對value相同LookAt:=xlWhole,一個column一個column的順序去找SearchOrder:=xlByColumns
'找的方向是下一個SearchDirection:=xlNext,大小寫不用完全相符合MatchCase:=False
Set Found = Rows("1:1").Find(ColumnOrder(ndx), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
If Not Found Is Nothing Then
If Found.Column <> counter Then
'整個column剪下之後
Found.EntireColumn.Cut
'剪下的整個column依序insert到第1個Column、第2個Column………的位置
'被人家卡位排擠的,就自動往右移動Shift:=xlToRight
Columns(counter).Insert Shift:=xlToRight
'清空記憶體裡面的內容,以免效能越來越差
Application.CutCopyMode = False
End If
counter = counter + 1
End If
Next ndx
'開啟畫面上的資料的更新
Application.ScreenUpdating = True
End Sub
不過抬頭資料並非全部都有,所以會有缺欄而無法直接比對..
各位前輩好
我是才剛接觸沒多久的新手
因工作經常需要對比資料
但excel的資料對比只能一行一行處理
而資料的抬頭都不同(但都是相同東西)
所以目前都用excel篩選後再逐一肉眼比對Q_Q (還會對錯...)
研究了一下VBA似乎可以解決我的問題
想請問要如何寫出
1.sheet不同+欄位不同+欄位抬頭不同的資料比對並將不同儲存格上色
欄位抬頭的不同目前是想說先用手動的方式建立一個對比用資料
ex:
A B C D
1 名稱1 位置 食物 價格
2 名稱2 地點 吃的 摳摳
3 名稱3 地址 熱量 錢錢
4 名稱4 緯度 飼料 $$
將需要對照的資料根據欄位抬頭依照上表對比後再去跟內建的資料做對比並且把不同格子上色
2.如有出現一些條件式的資料時,根據邏輯判定後將不同的格子上色
這個似乎只能寫在程式碼中....@_@?
ex:
資料庫
A B C
1 位置 食物 價格
2 美國/台灣 可樂 1.5美金/35台幣
3 台灣 漢堡/薯條 80台幣/50台幣
對比資料中
為美國時,則對比資料為1.5美金,如果不是就上色
為薯條時,則對比資料為50台幣,如果不是就上色
首次發文發問
如有冒犯或資訊不足的地方還請多指教指點