1

Microsoft Excel スプレッドシート (Mac 2011) があります。

  1. 一部の行には、列 A、C、D、E、F、および G にデータがあります。これらの行を PARENT 行と呼びます。

  2. 他の行は B 列にのみデータがあります。これを CHILD 行と呼びます。各 CHILD 行は、実際にはその上の PARENT 行のサブセットです。

  3. 各 PARENT 行には、その下に 1 ~ 20 の CHILD 行があります。

  4. 通常のパターンは、PARENT ROW、その下に複数の CHILD ROWS、次に別の PARENT ROW、その下に複数の CHILD ROWS、さらに別の PARENT ROW などです。

私は。。をしようとしています:

[a] 各 PARENT 行の内容をコピーし、その下の CHILD 行に追加します。

[b] コピーしたら、元の PARENT 行を削除します。

スプレッドシートに 40,000 行を超える行があり、マクロの作成方法がわかりません。

4

1 に答える 1

0

実際にはマクロは必要ありません (ただし、一番下にマクロを用意しています)。

[これは Windows 上の Excel で機能するソリューションであることに注意してください - 私は Excel for Mac の経験がないため、以下のソリューションのいずれかまたは両方が機能することを保証できません]

手動ソリューション

  1. 列 A、C、D、および E を選択します (最初に列 A を選択する必要があります)。
  2. F5を押して....スペシャルに移動し、ブランクを選択してから「OK」を押します
  3. 数式バーに「=A1」と入力します。ここで、A1 は手順 2 の最初の空白セルのすぐ上のセルです (下の図を参照してください。このセルは A1 です)。
  4. CtrlキーとEnterキーを同時に押します。子行に正しいデータが含まれるようになりました
  5. 列 A:E を選択し、[コピー] から [値として特殊貼り付け] を選択して、子行に入力した数式を値に変換します。
  6. B列を選択
  7. F5を押して....スペシャルに移動し、ブランクを選択して「OK」を押します(下の写真を参照)
  8. 選択した行を削除

ステップ 3 ステップ 7

コード ソリューション

Sub Delete()
Dim rng1 As Range
Dim rng2 As Range
On Error Resume Next
Set rng1 = Range("A:A,C:E").SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
rng1.Formula = "=R[-1]C"
'handles two row areas else SpecialCells will force both areas to area1 formulae
For Each rng2 In rng1.Areas
rng2.Value = rng2.Value
Next rng2
On Error Resume Next
Set rng1 = Range("B:B").SpecialCells(xlBlanks)
On Error GoTo 0
If Not rng1 Is Nothing Then rng1.EntireRow.Delete
End Sub
于 2011-12-23T07:00:58.557 に答える