我有很多 3 种语言的原始数据,其中大部分是.xlsx
. 您可以将数据视为包含 3 列和很多行(数百万)的表。
我想构建一个实现这个的宏:
检查相邻单元格上的单元格是否为空,将自己合并到上述单元格。
if (the cell on your left is empty):
merge yourself to the above cell;
我对VB一无所知,但我想自己实现,我该怎么做?
没有更多信息很难回答,但这概述了一些问题。
您需要在某个地方存储感兴趣的单元格的行和列:
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
注意:一个单元格可以占用很长的字符串,但只有开头可见。
希望这能让你开始。