我正在尝试编写代码,这使我能够在Excel中插入X行数基于列表。我可以想办法通过代码插入X行,但无法根据列表来解决如何处理它的问题。为了详细说明我有一个表1,其中列A具有一些唯一值,直到100行,并且我有另一个列表,在这些唯一值中说明需要插入多少行。现在我需要一个代码,它贯穿列表并在表单1中插入行。到目前为止,我已经提出了以下代码。
Sub test()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Dim k As Long, t As Range
k = InputBox("No. rows to be inserted")
Set t = Range("A2")
Do
Range(t.Offset(1, 0), t.Offset(k, 0)).EntireRow.Insert
Set t = Cells(t.Row + k + 1, 1)
If t.Offset(1, 0) = "" Then Exit Do
Loop
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
End Sub
然而,这是我使用的非常严格的代码。我如何按照清单工作。
答案 0 :(得分:1)
您可以在唯一值列表中使用索引/匹配来获取要插入的行数。下面将获得要为k插入的行数。
...
Dim k As Long, t As Range
Dim ws As Worksheet
Do
Set ws = Worksheets("Sheet2")
k = WorksheetFunction.Index(ws.Range("B:B"), WorksheetFunction.Match(t.Value, ws.Range("A:A"), 0))
...
注意:Sheet2是您要插入的行数的唯一值列表。范围A:A是唯一值,范围B:B是行数。
这个问题是索引...如果查找列表中没有匹配项,您将收到VBA错误。 Sheet1中包含=IFERROR([index/match function],0)
的帮助列会更好,或者您可以忽略On Error Resume Next
的错误。