我正在寻找关于Excel的VBA代码的方向。
我从原理图和零件清单中导出信息。零件清单开头通常有3-5个项目没有参考标志(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相同
答案 0 :(得分:0)
您的示例数据显示一个标题行,后跟从单元格A2开始的三个连续数据列。我无法按照您展示的代码段尝试实现的目标,如果我说实话它看起来与您的问题无关。
我已将您的问题解释为: -
您需要空的RefDes
从上到下填充A N (其中 N 是从1开始的递增数字)。
您需要空的RefDes
从下到上填充X N (其中 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
因为这是一条好线但令人困惑。它正在查找工作表底部的最后一个填充单元格的行号。
转到表格的底部(A栏):WkSht.Cells(WkSht.Rows.Count, 1)
找到空白单元格的结尾(即查找内容):.End
向上看:(xlUp)
返回该查找的行号:.Row