我有很多3种语言的原始数据,大部分时间都在.xlsx
。
您可以考虑数据,因为表包含3列和许多行(数百万)。
我想构建一个实现它的宏:
检查相邻单元格上的单元格是否为空,将自己合并到上面的单元格中。
if (the cell on your left is empty):
merge yourself to the above cell;
我对VB一无所知,但我想自己实现它,我该怎么做?
答案 0 :(得分: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
如果您想在新行上使用“cat”::
Cells(RowCrnt-1, ColCrnt).Value = _
Cells(RowCrnt-1, ColCrnt).Value & vblf & Cells(RowCrnt-1, ColCrnt).Value
注意:单元格可以使用非常长的字符串,但只有开头可见。
希望这能让你开始。