1

我有一个 Microsoft Excel 电子表格(Mac 2011)。

  1. 有些行在 A、C、D、E、F 和 G 列中有数据。我将这些行称为父行。

  2. 其他行仅在 B 列中有数据。我将它们称为 CHILD 行。每个 CHILD 行实际上是它上面的 PARENT 行的子集。

  3. 每个 PARENT 行下面有 1 到 20 个 CHILD 行。

  4. 模式通常是:父行,它下面的几个子行,然后是另一个父行,它下面的几个子行,然后是另一个父行,等等。

我在尝试着:

[a] 复制每个 PARENT 行的内容并将它们添加到它下面的 CHILD 行。

[b] 复制后,删除原始的 PARENT 行。

电子表格有40,000多行,我不知道如何创建宏。

4

1 回答 1

0

您实际上并不需要宏(但我在底部提供了一个)

[请注意,这是适用于 Windows 上 Excel 的有效解决方案 - 我没有使用 Excel for Mac 的经验,因此不能保证以下任一或两种解决方案都适用于您]

手动解决方案

  1. 选择 A、C、D 和 E 列(确保您首先选择 A 列)
  2. 按 F5 .... 转到 Special 并选择 Blanks,然后点击“ok”
  3. 在公式栏中,键入 =A1,其中 A1 是步骤 2 中第一个空白单元格正上方的单元格(见下图,此单元格是 A1)
  4. 同时按下CtrlEnter键。您现在在子行中有正确的数据
  5. 选择列 A:E 并复制然后选择性粘贴作为值将您刚刚在子行中输入的公式转换为值
  6. 选择 B 列
  7. 按 F5 .... Goto Special 并选择 Blanks 然后点击“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 回答