私はする必要があります:
Excel の通常の自動入力機能 (セルの横にあるドットをダブルクリック) を使用して、コンテンツをサブセルにコピーしているため、この場合、セル A1 のドットをクリックすると、次のようになります。
隣接するセルに値がなくなるまで、列全体でプロセスを繰り返すスクリプトが必要です。
私はする必要があります:
Excel の通常の自動入力機能 (セルの横にあるドットをダブルクリック) を使用して、コンテンツをサブセルにコピーしているため、この場合、セル A1 のドットをクリックすると、次のようになります。
隣接するセルに値がなくなるまで、列全体でプロセスを繰り返すスクリプトが必要です。
キーボードからこれを行うことができます...
数式を削除するには、列 A を選択し、特別な値をコピーして貼り付けます。
おそらく、これはあなたが探しているものです:
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
これは次のことを行います: