用"A"+增量数字填充第一组空白单元格,用"X"+增量数字填充第二组
Fill first group of blank cells with "A"+incremented number, fill second group with "X"+incremented number
我正在寻找 VBA 代码的方向 Excel。
我有从原理图和零件清单中导出的信息。零件清单的开头通常有 3-5 项没有指定参考指示符 (ref des),而零件清单末尾的几项没有分配 ref des。
第一个空白组(零件列表的开头)我想将 ref des 指定为 "A" 和一个递增的数字(即 A1、A2、A3)。
我想将在列表末尾找到的下一组空白项目分配为 "X" 加上数字 (X1, X2, X3, X4)。
我唯一能找到的是填充所有相同的文本,或者只是数字。我找不到指定不同组的方法。
Example of file data:
Pos RefDes Part Number
1 1-234
2 2-345
3 3-456
20 C1 5-678
21 C2 6-789
22 C3 7-345
158 U14 8-456
159 U18 8-058
167 9-176-1
168 9-272-1
169 10-349-1
171 10-883-1
172 11-1441-1
所以逻辑如下:如果信息在 A 列(Pos)中但不在 B(RefDes)中,则 B="A1",下一个递增数字直到 B(RefDes)不为空,然后下一个填充 A (Pos) 的空 B (Ref Des) 单元格然后 (RefDes) B="X1" 递增,直到 A (Pos) 为空(范围结束)
希望这些信息足够了。
这是我使用但不适用于第二组的示例,我不想搜索特定文本,因为它可能略有不同。
Sub AddRefDes_IfBlank()
Dim X As String
Dim n As Integer
On Error Resume Next
Cells.Find(What:="PWA", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
ActiveCell(1, -1).Select
ActiveCell.FormulaR1C1 = "A1"
'更多相同然后 End Sub
您的示例数据显示一行 header 后跟从单元格 A2 开始的连续三列数据。我无法理解您显示的代码片段试图实现的目标,老实说它看起来与您的问题无关。
我将你的问题解释为:-
你需要空 RefDes
来填充 AN(其中 N 是递增的编号从 1) 开始,从上到下。
你需要空 RefDes
来填充 XN(其中 N 是递增的从1)开始的数字从下往上。
这就是我计划向您展示并向您展示的内容,如果我因为不在问题中而遗漏了某些内容,我仍然回答了问题并且应该提交一个新的跟进问题 IF 如果没有支持,您将无法成功进行更改。
这里需要两个循环,一个负责自上而下的路线,另一个负责自下而上的路线,您还需要一个变量来保存我们递增的数字。
我在示例代码中添加了注释以向您展示正在发生的事情。
Public Sub Test()
Dim LngCounter As Long
Dim LngRow As Long
Dim WkSht As Excel.Worksheet
'First we connect to the worksheet we will be working ing
Set WkSht = ThisWorkbook.Worksheets("Sheet1")
'Loop 1 - Top down
'Our row number it the first row of data
LngRow = 2
'This is the incrementing counter
LngCounter = 1
'This loop is processing every cell from B2 down until it gets to a non-blank one
Do Until WkSht.Cells(LngRow, 2) <> ""
'Update the cell with A and the number
WkSht.Cells(LngRow, 2) = "A" & LngCounter
'Prep the next number
LngCounter = LngCounter + 1
'Move to the next cell down
LngRow = LngRow + 1
Loop
'Loop 2 - Bottom up
'Our row number is worked out based on the last populated row from column A
LngRow = WkSht.Cells(WkSht.Rows.Count, 1).End(xlUp).Row
'This is the incrementing counter
LngCounter = 1
'This loop is processing every cell from the column B and last row in
'the table upwards until it gets to a non-blank one
Do Until WkSht.Cells(LngRow, 2) <> ""
'Update the cell
WkSht.Cells(LngRow, 2) = "X" & LngCounter
'Prep the next number
LngCounter = LngCounter + 1
'Move to the next cell up
LngRow = LngRow - 1
Loop
'When we are finished we disconnect from the worksheet (free resources)
'This is good practice
Set WkSht = Nothing
End Sub
我想解释一下 WkSht.Cells(WkSht.Rows.Count, 1).End(xlUp).Row
,因为这是一句很好但令人困惑的台词。它正在从工作sheet 向上查找的底部找到最后填充的单元格的行号。
转到 sheet 的底部(A 列):WkSht.Cells(WkSht.Rows.Count, 1)
查找空白单元格的结尾(即查找内容):.End
向上看:(xlUp)
Return 该查找的行号:.Row
我正在寻找 VBA 代码的方向 Excel。
我有从原理图和零件清单中导出的信息。零件清单的开头通常有 3-5 项没有指定参考指示符 (ref des),而零件清单末尾的几项没有分配 ref des。
第一个空白组(零件列表的开头)我想将 ref des 指定为 "A" 和一个递增的数字(即 A1、A2、A3)。
我想将在列表末尾找到的下一组空白项目分配为 "X" 加上数字 (X1, X2, X3, X4)。
我唯一能找到的是填充所有相同的文本,或者只是数字。我找不到指定不同组的方法。
Example of file data:
Pos RefDes Part Number
1 1-234
2 2-345
3 3-456
20 C1 5-678
21 C2 6-789
22 C3 7-345
158 U14 8-456
159 U18 8-058
167 9-176-1
168 9-272-1
169 10-349-1
171 10-883-1
172 11-1441-1
所以逻辑如下:如果信息在 A 列(Pos)中但不在 B(RefDes)中,则 B="A1",下一个递增数字直到 B(RefDes)不为空,然后下一个填充 A (Pos) 的空 B (Ref Des) 单元格然后 (RefDes) B="X1" 递增,直到 A (Pos) 为空(范围结束)
希望这些信息足够了。
这是我使用但不适用于第二组的示例,我不想搜索特定文本,因为它可能略有不同。
Sub AddRefDes_IfBlank()
Dim X As String
Dim n As Integer
On Error Resume Next
Cells.Find(What:="PWA", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
ActiveCell(1, -1).Select
ActiveCell.FormulaR1C1 = "A1"
'更多相同然后 End Sub
您的示例数据显示一行 header 后跟从单元格 A2 开始的连续三列数据。我无法理解您显示的代码片段试图实现的目标,老实说它看起来与您的问题无关。
我将你的问题解释为:-
你需要空
RefDes
来填充 AN(其中 N 是递增的编号从 1) 开始,从上到下。你需要空
RefDes
来填充 XN(其中 N 是递增的从1)开始的数字从下往上。
这就是我计划向您展示并向您展示的内容,如果我因为不在问题中而遗漏了某些内容,我仍然回答了问题并且应该提交一个新的跟进问题 IF 如果没有支持,您将无法成功进行更改。
这里需要两个循环,一个负责自上而下的路线,另一个负责自下而上的路线,您还需要一个变量来保存我们递增的数字。
我在示例代码中添加了注释以向您展示正在发生的事情。
Public Sub Test()
Dim LngCounter As Long
Dim LngRow As Long
Dim WkSht As Excel.Worksheet
'First we connect to the worksheet we will be working ing
Set WkSht = ThisWorkbook.Worksheets("Sheet1")
'Loop 1 - Top down
'Our row number it the first row of data
LngRow = 2
'This is the incrementing counter
LngCounter = 1
'This loop is processing every cell from B2 down until it gets to a non-blank one
Do Until WkSht.Cells(LngRow, 2) <> ""
'Update the cell with A and the number
WkSht.Cells(LngRow, 2) = "A" & LngCounter
'Prep the next number
LngCounter = LngCounter + 1
'Move to the next cell down
LngRow = LngRow + 1
Loop
'Loop 2 - Bottom up
'Our row number is worked out based on the last populated row from column A
LngRow = WkSht.Cells(WkSht.Rows.Count, 1).End(xlUp).Row
'This is the incrementing counter
LngCounter = 1
'This loop is processing every cell from the column B and last row in
'the table upwards until it gets to a non-blank one
Do Until WkSht.Cells(LngRow, 2) <> ""
'Update the cell
WkSht.Cells(LngRow, 2) = "X" & LngCounter
'Prep the next number
LngCounter = LngCounter + 1
'Move to the next cell up
LngRow = LngRow - 1
Loop
'When we are finished we disconnect from the worksheet (free resources)
'This is good practice
Set WkSht = Nothing
End Sub
我想解释一下 WkSht.Cells(WkSht.Rows.Count, 1).End(xlUp).Row
,因为这是一句很好但令人困惑的台词。它正在从工作sheet 向上查找的底部找到最后填充的单元格的行号。
转到 sheet 的底部(A 列):WkSht.Cells(WkSht.Rows.Count, 1)
查找空白单元格的结尾(即查找内容):.End
向上看:(xlUp)
Return 该查找的行号:.Row