用"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 开始的连续三列数据。我无法理解您显示的代码片段试图实现的目标,老实说它看起来与您的问题无关。

我将你的问题解释为:-

  1. 你需要空 RefDes 来填充 AN(其中 N 是递增的编号从 1) 开始,从上到下。

  2. 你需要空 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