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。这正是我所需要的,简单高效,值得称赞!