我一直在思考我目前面臨的一個問題。
我有一個看起來像這樣的檔案
我怎樣才能(使用 VBA)使列 (B) 填充第一個值 (P),直到它到達下一個值 (R),然后繼續填充它 (R),直到它到達下一個值,依此類推,直到列 (C) 中的值結束?(如自動填充)
(B) 列中的值可以是 (P) 或 (R),但每次都不相同。以及行數。
應該是這樣的(可以洗掉空白行)
我已經嘗試了幾件事來使它作業。首先,我編碼了這個:
Dim nb As Workbook
nb.Sheets(2).Select
Range("C2").Select
i = 2
Do Until IsEmpty(Range("C" & i))
If InStr(1, Range("C" & i), "") Then
nb.Sheets(2).Range("B" & i) = nb.Sheets(2).Range("B2")
End If
i = i 1
Loop
正如預期的那樣,它只填充了列的第一部分:
像這樣:
然后我嘗試在代碼中添加更多內容:
nb.Sheets(2).Select
Range("C2").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
i = ActiveCell
Dim inD As String
ActiveCell.Offset(0, -1).Select
inD = ActiveCell
ActiveCell.Offset(0, 1).Select
Do Until IsEmpty(Range("C" & i))
If InStr(1, Range("C" & i), "") Then
nb.Sheets(2).Range("B" & i) = inD
End If
i = i 1
Loop
但正如預期的那樣,這不起作用。似乎您無法使用 ActiveCell 將單元格位置分配給 i。現在我收到“運行時錯誤 1004:物件的方法范圍 - '全域'失敗”
我還嘗試使用錄音進行自動填充,但它也不起作用。
我將不勝感激在這個問題上的幫助!
uj5u.com熱心網友回復:
您可以按照以下步驟操作:
- 選擇整個 B 列
- 按Ctrl G啟動“轉到”選單,選擇“特殊”。
- 選擇“空白”
- 用滑鼠在公式欄中單擊并鍵入
=B2 - 按 Ctrl ENTER
如果您想在宏中使用它,只需將其記錄下來。
uj5u.com熱心網友回復:
試試那個代碼。您將獲得與 Dominique 程序類似的輸出,但它也會洗掉空白行。
Sub test()
Dim sht As Worksheet: Set sht = ActiveSheet
Dim LastRow As Long
Dim myRng As Range
'Find last row with data in sheet
LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
'Set Range to fill in with values
Set myRng = sht.Range("B2", "B" & LastRow - 1)
'Loop through every cell in range and paste value from previous cell
For Each cell In myRng
If Not cell = "" Then
If cell.Offset(1, 0) = "" And cell.Offset(1, 1) <> "" Then
cell.Offset(1, 0).Value = cell.Value
Else
GoTo nextIteration
End If
End If
nextIteration:
Next cell
'delete empty rows
For x = LastRow To 1 Step -1
If WorksheetFunction.CountA(Rows(x)) = 0 Then
sht.Rows(x).Delete
End If
Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329187.html
