【发布时间】:2016-09-06 23:39:11
【问题描述】:
我有一个 excel 电子表格,我想将每个单元格与其中的值合并到它下面的每个空单元格,直到该列中的下一个单元格具有值。
目前我有这个:
Sub mergemainbody()
lrow = ActiveSheet.UsedRange.Rows.Count - 2
On Error Resume Next
Application.DisplayAlerts = False
For col = 1 To 50
For Each ar In Cells(3, col).Resize(lrow).SpecialCells (xlCellTypeBlanks).Areas
ar.Resize(ar.Rows.Count + 1).Offset(-1).Merge
Next
Next
End Sub
这适用于整个工作表,但我希望宏仅适用于选定区域。然而,简单地将For col = 1 to 50 更改为For Each cell In Selection 会使宏看起来什么都不做。
数据示例:
Heading | Heading | Heading | Heading |
1456262 | 270520 | 574038 | 583059 |
Words | --------- | --------- | --------- |
586048 | --------- | --------- | --------- |
Words | 694574 | 856738 | 068438 |
其中 --- 表示单元格为空。
【问题讨论】:
-
你能否详细说明停止工作它是如何停止工作的,它什么也不做,你有没有收到错误代码或什么?
-
您是否尝试过先根据您的选择设置一个范围,然后在该范围内循环?
-
@litelite 对不起,它什么也没做,没有错误代码!
-
@CallumDA33 我的问题是,理想情况下,随着更多数据添加到电子表格中,我希望我的同事将此宏用于不同区域,因此我不希望它仅用于固定区域如果这有意义吗?还是我误解了你的问题?
-
@BruceWayne 不幸的是,我不需要合并 - 我也认为这是一个坏主意,但我没有选择遗憾。您是否尝试使用“选择中的每个单元格”或“col = 1 到 50”?