Excel VBA:使用数字和字母维护数字格式

Excel VBA:使用数字和字母维护数字格式,excel,vba,Excel,Vba,我正在编写一个代码,基本上我需要遵循逻辑顺序。我正在检查所有的线路 Set rep = Sheets("Details") For i = 2 To n If Sheets("Work").Range("A:A").Find(Worksheets("Work_report").Range("E" & i).Value, lookat:=xlWhole) Is Nothing Then Else: o = rep.Range("A" & Rows.C

我正在编写一个代码,基本上我需要遵循逻辑顺序。我正在检查所有的线路

Set rep = Sheets("Details")    
For i = 2 To n    
If Sheets("Work").Range("A:A").Find(Worksheets("Work_report").Range("E" & i).Value, lookat:=xlWhole) Is Nothing Then    
Else:    
o = rep.Range("A" & Rows.Count).End(xlUp).Row + 1    
rep.Range("A" & o).Value = "FT_EXCEL"    
rep.Range("B" & o).Value = Sheets("Start").Range("C5") & "AB" & o - 1    
End If    
Next i    
最后一行(原始代码中有50多行)返回单元格C5(20170331)&AB和o减1的值(因为我从2开始(第一行标题))。这就是20170331AB1,但应该是20170331AB01(0之前为零)。这个序列在10之后像一个符咒一样工作,但是在10之前,当我需要添加一个零时,我被卡住了

有什么想法吗?谢谢。

试试这个:

rep.Range("B" & o).Value = Sheets("Start").Range("C5") & "AB" & Format(o - 1, "00")

您可以使用
AutoFilter()
方法的
运算符
xlFilterValues
值一次性完成此操作

Sub main()
    Dim rep As Worksheet

    Dim criteriaArr As Variant
    With Worksheets("Work_report") '<--| reference "Work_report" sheet
        criteriaArr = Application.Transpose(.Range("E2", .Cells(.Rows.Count, "E").End(xlUp)).Value) '<--| store its column E cells content from row 2 down to last not empty one
    End With

    Set rep = Sheets("Details")
    With Worksheets("Work") '<--| reference "Work" sheet
        With .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)) '<--| reference its column A cells from row 1 (header) down to last not empty one
            .AutoFilter Field:=1, Criteria1:=criteriaArr, Operator:=xlFilterValues '<--| filter it with "Work_report" sheet column E content
            If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then '<--| if any filtered cells other then headers
                With .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) '<--| reference filtered cells skipping header
                    rep.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(.Rows.Count).Value = "FT_EXCEL" '<--| write 'rep' sheet column A corresponding cells content
                    With rep.Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(.Rows.Count)
                        .Formula = "=CONCATENATE(Start!$C$5,""AB"",TEXT(ROW(),""00""))" '<--| '<--| write 'rep' sheet column B corresponding cells content
                        .Value = .Value
                    End With
                End With
            End If
        End With
        .AutoFilterMode = False
    End With
End Sub
Sub-main()
Dim rep As工作表
作为变体的模糊标准

带着工作表(“工作报告”),非常感谢Tim Williams。这正是我所需要的,简单高效,值得称赞!