如何在excel 2010中构建条件单元格合并?

时间:2012-04-20 08:40:30

标签: excel excel-vba vba

我有很多3种语言的原始数据,大部分时间都在.xlsx。 您可以考虑数据,因为表包含3列和许多行(数百万)。

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

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

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

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

1 个答案:

答案 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    

注意:单元格可以使用非常长的字符串,但只有开头可见。

希望这能让你开始。