我希望有人能幫助我。 我在excel中的一個工作表中有C列和N列中的兩列。爲什麼countif函數只在我處於同一個工作表時才起作用?
柱C:
AAAA1
ABAA3
KDFG4
...
列N:
ABAA2
AAAA4
MMMM3 ...
然後,添加式'左'進列A和L以從參考數字i中切斷正確的數字n列C和N:
Dim lastrow As Long
Worksheets(sheet).Cells(2, column - 1).Formula = "=LEFT(" & Worksheets(sheet).Cells(2, column - 1).Offset(0, 2).Address(0, 0) & ",6)"
lastrow = Worksheets("AAL").Cells(Worksheets(sheet).rows.Count, column).End(xlUp).row
Worksheets(sheet).Cells(2, column - 1).Resize(lastrow - 1).FillDown
列A:
AAAA
ABAA
KDFG
...
柱L:
ABAA
AAAA
MMMM ...
後來的I使用下面的代碼從L列在A列的底部添加缺少的參考號碼:
Worksheets(sheet).Calculate
Dim Rw As Long, Rw2 As Long, iFound As Integer
Rw2 = Worksheets(sheet).Cells(Worksheets(sheet).rows.Count, 3).End(xlUp).row + 1
For Rw = 2 To Worksheets(sheet).Cells(rows.Count, 14).End(xlUp).row
iFound = WorksheetFunction.CountIf(Range("A:A"), Worksheets(sheet).Cells(Rw, 12))
If iFound = 0 Then
Worksheets(sheet).Cells(Rw2, 1).Value = Worksheets(sheet).Cells(Rw, 12).Value
Rw2 = Rw2 + 1
End If
Next Rw
奇怪的是,如果我有工作表「表」開放,代碼工作絕對沒問題。但是,如果我在運行VBA代碼時處於不同的工作表上,則代碼將在列A底部添加來自列L的所有值,而不僅僅是'MMMM'。
它看起來像從第一個查詢留下的公式沒有正確計算,除非你打開Excel表。但我想代碼
Worksheets(sheet).Calculate
將做到這一點。
非常感謝您的幫助!
注意,參考範圍是直接在這裏,'WorksheetFunction.CountIf(範圍( 「A:A」),工作表(表).Cells(RW, 12))',如果你想從各種工作表運行宏,可以嘗試間接引用,比如'Worksheet(sheet).Range(A:A)'。認爲你錯過了那部分。 –
如果我離開「離開,我得到一個編譯錯誤。 –
對不起,它應該是'工作表(表)。範圍(」A:A「)'。我的意思是,你應該也包括在這個參考表 –