iT邦幫忙

0

VBA資料比對

vba

大家好,
我是VBA新手,
我想將公司的兩個excel的C列的資料做比對,
將非"---"的部分及缺少資料部分的底色改成黃色,
請問我該怎麼做?

slime iT邦大師 1 級 ‧ 2019-08-05 17:02:06 檢舉
只有兩個檔案的話, 建議使用"設定格式化條件", 新增兩項條件來處理.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
舜~
iT邦高手 1 級 ‧ 2019-08-05 16:58:05

邏輯
1.用迴圈跑過所有指定的儲存格
-> 要會使用迴圈
2.將符合指定條件的儲存格進行處裡
-> 要會撈取特定儲存格的內容
-> if判斷 非"---"的部分及缺少資料部分(空白儲存格??)
3.改底色為黃色
-> 要會編輯特定儲存格

0
孫守真任真甫
iT邦研究生 4 級 ‧ 2019-08-06 08:17:16

「將公司的兩個excel的C列的資料做比對」
我本以為菩薩您是要將二個活頁簿中的工作表作對照比對,看您下文,是只是個別比對,故改寫如下。詳實境秀。感恩感恩 南無阿彌陀佛

Option Explicit

Sub 兩個excel的C列的資料做比對()
Dim exlWB1 As Workbook, exlWB2 As Workbook, exlWB1RowC, exlWB2RowC
If Range("a1") = "" Or Range("a2") = "" Or Range("B1") = "" Or Range("B2") = "" Then Exit Sub
'a1是第1份活頁簿,b1是第1份活頁簿的指定C列
'a2是第2份活頁簿,b2是第2份活頁簿的指定C列
If VBA.Dir(Range("a1")) = "" Or VBA.Dir(Range("a2")) = "" Then Exit Sub
If VBA.IsNumeric(Range("B1")) = False Or IsNumeric(Range("B2")) = False Then Exit Sub
If Range("a1") = "" Or Range("a2") = "" Or Range("B1") = "" Or Range("B2") = "" Then Exit Sub
Set exlWB1 = VBA.GetObject(Range("a1")) '取得第1份活頁簿
Set exlWB2 = VBA.GetObject(Range("a2")) '取得第2份活頁簿
checkCellVal exlWB1, VBA.CLng(Range("B1"))
checkCellVal exlWB2, VBA.CLng(Range("B2"))
exlWB1.Windows(1).Visible = True
exlWB2.Windows(1).Visible = True
End Sub

Sub checkCellVal(exlWB As Workbook, row As Long)
Dim exlWBRowC
For Each exlWBRowC In exlWB.Sheets(1).UsedRange.Rows(row).Cells
    If exlWBRowC = "" Or exlWBRowC <> "---" Then
        exlWBRowC.Interior.ColorIndex = 27
    End If
Next exlWBRowC
End Sub

檔案下載:

http://bit.ly/2yFff9c

程式碼撰寫測試實境秀:

Yes

截圖示例:

https://ithelp.ithome.com.tw/upload/images/20190806/20118680WXpmSf8hmJ.png

我要發表回答

立即登入回答