0

我有很多 3 种语言的原始数据,其中大部分是.xlsx. 您可以将数据视为包含 3 列和很多行(数百万)的表。

我想构建一个实现这个的宏:

检查相邻单元格上的单元格是否为空,将自己合并到上述单元格。

if (the cell on your left is empty):
     merge yourself to the above cell;

我对VB一无所知,但我想自己实现,我该怎么做?

4

1 回答 1

1

没有更多信息很难回答,但这概述了一些问题。

您需要在某个地方存储感兴趣的单元格的行和列:

Dim ColCrnt As Long
Dim RowCrnt As Long

如果要遍历列,可以编写如下内容:

ColCrnt = 5     ' 5 represents column "E".  Columns are numbered from 1.

For RowCrnt = 1 to 1000
  'Update code.
Next

如果你想移动光标然后调用宏,你可以这样写:

ColCrnt = ActiveCell.Column
RowCrnt = ActiveCell.Row
' Update Code.

假设更新代码是对活动工作表进行操作,它将类似于:

If Cells(RowCrnt, ColCrnt - 1).Value = "" Then
  Cells(RowCrnt-1, ColCrnt).Value = _
          Cells(RowCrnt-1, ColCrnt).Value & Cells(RowCrnt-1, ColCrnt).Value    
  Cells(RowCrnt, ColCrnt).Value = ""
End If

Cells(RowCrnt, ColCrnt).Value是当前单元格的值。从 RowCrnt 中减去 1,引用上面的单元格。从 ColCrnt 中减去 1,引用左侧的单元格。

Cells(RowCrnt-1, ColCrnt).Value = Cells(RowCrnt-1, ColCrnt).Value & Cells(RowCrnt-1, ColCrnt).Value将当前单元格的值连接到上面单元格的末尾。

Cells(RowCrnt, ColCrnt).Value = ""清除当前单元格。

所以:

       |    E    |
       |---------|
       | The     |
       | cat     |

变成:

       |    E    |
       |---------|
       | Thecat  |
       |         |

如果你想在“The”和“cat”之间有一个空格:

  Cells(RowCrnt-1, ColCrnt).Value = _
       Cells(RowCrnt-1, ColCrnt).Value & " " & Cells(RowCrnt-1, ColCrnt).Value    

如果您想在新行上添加“猫”::

  Cells(RowCrnt-1, ColCrnt).Value = _
      Cells(RowCrnt-1, ColCrnt).Value & vblf & Cells(RowCrnt-1, ColCrnt).Value    

注意:一个单元格可以占用很长的字符串,但只有开头可见。

希望这能让你开始。

于 2012-04-21T23:32:00.943 回答