2

私はする必要があります:

Excel オートフィル

Excel の通常の自動入力機能 (セルの横にあるドットをダブルクリック) を使用して、コンテンツをサブセルにコピーしているため、この場合、セル A1 のドットをクリックすると、次のようになります。

ここに画像の説明を入力

隣接するセルに値がなくなるまで、列全体でプロセスを繰り返すスクリプトが必要です。

4

2 に答える 2

6

キーボードからこれを行うことができます...

  • 列Aを選択
  • ホームを選択| 検索と選択 | Goto Special... 空白 OK
  • [=] [上矢印] [ctrl+Enter] を押します。

数式を削除するには、列 A を選択し、特別な値をコピーして貼り付けます。

ここに画像の説明を入力

于 2012-06-29T15:42:55.450 に答える
2

おそらく、これはあなたが探しているものです:

Option Explicit
Sub FillInTheBlanks()
    Dim StartCell As Range, EndCell As Range
    Set StartCell = ActiveCell
    Set EndCell = ActiveSheet.Cells(ActiveSheet.UsedRange.Rows.Count + 1, StartCell.Offset(0, 1).Column).End(xlUp)

    Dim currentText As String
    Dim i As Long
    For i = StartCell.Row To EndCell.Row
        If Not IsEmpty(ActiveSheet.Cells(i, StartCell.Row)) Then
            currentText = ActiveSheet.Cells(i, StartCell.Row).Text
        Else
            ActiveSheet.Cells(i, StartCell.Row).Value = currentText
        End If
    Next i
End Sub

そのコードは次を実行します。

ここに画像の説明を入力


スクリーンショットの内容が本当に必要な場合は、次のようにする必要があります。

Option Explicit
Sub FillInTheBlanks()
    Dim StartCell As Range, EndCell As Range, NextCell As Range
    Set StartCell = ActiveCell
    Set EndCell = Cells(ActiveSheet.UsedRange.Rows.Count + 1, StartCell.Offset(0, 1).Column).End(xlUp)

    While StartCell.Row < EndCell.Row
        Set NextCell = StartCell.Offset(1, 1).End(xlDown).Offset(0, -1)
        StartCell.AutoFill Destination:=ActiveSheet.Range(StartCell, NextCell), Type:=xlFillDefault
        Set StartCell = NextCell.Offset(1, 0)
    Wend
End Sub

これは次のことを行います:

ここに画像の説明を入力

于 2012-06-29T13:08:53.923 に答える