簡體   English   中英

根據單元格值插入編號的單元格+行

[英]Insert numbered cells + row based on cell value

我已經設法根據單元格值插入行,例如如果 A1 單元格為 20,我運行宏,A1 下出現 20 行,這些行是空白的,我需要 A1 下的 20 個新單元格為 1 到 20 ( A1 中的數字)如果可能請告訴我。

干杯阿德里安

嘗試這個:

Sub counter()
Dim i as integer
for i = 2 to cells(1, 1) + 1
    cells(i, 1) = i - 1
next i
End Sub

在單元格下方插入整數序列

活動工作表的基本示例

  • 請注意,這不會插入行,它只是將整數序列寫入A1下方的單元格。
Sub IntegersBelow()
    With Range("A1")
        .Resize(.Value).Offset(1).Value _
            = .Worksheet.Evaluate("ROW(1:" & CStr(.Value) & ")")
    End With
End Sub

應用於您的實際用例

在此處輸入圖像描述

  • 調整常量部分中的值。
Sub InsertIntegersBelow()
 
    ' Use constants to change their values in one place instead
    ' of searching for them in the code (each may be used multiple times).
    Const wsName As String = "Sheet1"
    Const fRow As Long = 3
    Const Col As String = "E"
    
    ' Reference the workbook ('wb').
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing the code
    
    ' Reference the worksheet ('ws').
    Dim ws As Worksheet: Set ws = wb.Worksheets(wsName)
    
    ' Calculate the last row ('lRow'),
    ' the row of the last non-empty cell in the column.
    Dim lRow As Long: lRow = ws.Cells(ws.Rows.Count, Col).End(xlUp).Row
    
    ' Validate the last row.
    If lRow < fRow Then
        MsgBox "No data in column range.", vbInformation
        Exit Sub
    End If
    
    Dim cCell As Range ' Current Cell
    Dim cValue As Variant ' Current Cell Value
    Dim r As Long ' Current Row
    
    For r = lRow To fRow Step -1 ' loop backwards
        Set cCell = ws.Cells(r, Col) ' reference the current cell...
        cValue = cCell.Value ' ... and write its value to a variable
        If VarType(cValue) = vbDouble Then ' is a number
            cValue = CLng(cValue) ' ensure whole number
            If cValue > 0 Then ' greater than 0
                ' Insert the rows.
                cCell.Offset(1).Resize(cValue) _
                    .EntireRow.Insert xlShiftDown, xlFormatFromLeftOrAbove
                With cCell.Offset(1).Resize(cValue)
                    ' Write the values.
                    .Value = ws.Evaluate("ROW(1:" & cValue & ")")
                    ' Apply formatting.
                    .ClearFormats
                    .Font.Bold = True
                End With
            'Else ' less than or equal to zero; do nothing
            End If
        'Else ' is not a number
        End If
    Next r
    
    MsgBox "Rows inserted.", vbInformation
    
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM