EXCEL VBA 代码合并?

在excel中可以使用合并计算功能将多个单元格区域进行汇总计算,在进行合并计算时,首先添加要合并计算的单元格区域,然后选择汇总方式,可以设置标签位置是在首行、还是最左列。

如果要在vba中使用这一功能,可以使用对象的方法。

合并计算的录制宏代码如下:

经过修改后,可以形成如下的通用的vba合并计算代码如下:

值得注意的是,如果要合并计算的单元格区域是外部工作簿,还需要带上路径。

声明: 本站文章均属原创,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则视为侵权。如果想要每天都收到本站的技术文章推送,可以微信搜索公众号:水星Excel或者Excel_Office关注。其它事宜请加QQ: 或微信号:xycgenius 联系。 

}

我正在使用MS Excel 2010,并且我有一个没有宏且没有公式的Excel工作表,所有内容均为原始格式。

该工作表包含许多列和行(列A至WC),如下图所示。

我想(合并)将所有列从" B"移动到" WC"到列" A"的最后一行。

" A"列的内容不得舍弃。
必须将" B"至" WC"的每一列插入" A"列的最后一行下方

我的列故意不包含列标题(列名)。

实现此目标的最佳方法是什么?

我确实找到了这个线程:
如何在Excel中将列中的行合并到一个单元格中? -老实说,我目前无法真正理解如何在工作表中进行申请。其次,该主题创建于3年前,并且活跃于2个月前。在那里,我决定在这里问一个新问题。

我进行了研究,发现了很多不同类型的合并方式:

考虑到我的情况下的列数,我认为VBA脚本解决方案将是最合适的。如果有人可以提供反馈意见,我会给+1

这是我没有for循环的自制宏:

哎呀。由于某种原因,该错误在305707记录后停止,这是因为我的工作表包含许多活动单元格,从而导致一个范围内的其他存储单元格并使A列中的行溢出,超出了Excel的内存限制。这是另一回事了。


这个微小的宏代码为我工作:

不幸的是,由于MS Excel 2010的限制,它在305707记录后停止了,我建议如果其他人使用它,则应该删除几列,因为255列很多(即使对于MS Access)。您还应该在安全模式下运行MS Excel。


这是一种使用数组加快速度的方法。


这是一种俄罗斯方块方法。它可能不是最快的方法,但是关闭屏幕更新和事件处理应该可以加快速度。如果涉及公式,则也可以将计算模式设置为xlCalculationManual。

如果您的数据不匹配,请在第三行中更改工作表名称,并在第五行中调整边界列(当前为WC列)。

如果您除了工作表上的相关数据以外还有其他任何东西,那真的不是一个合适的解决方案,因为它会极大地替换所有未移动的内容。


}

我有很多类似这样的数据,我希望将相同“姓名”的人,其“借用书目”也合并在同一单元格显示,效果如图。
VBA新手,请各位高手赐教,谢谢!

书名1;书名2;书名5

感谢你的帮助,你的代码完全能达到我的要求。只是我刚接触VBA,水平有限,对数组的应用不是很熟悉,所以看这段代码时有些不理解。
我曾经见到过不是通过数组的方式来编写这段代码的,也能达到同样的要求,但是对具体的语句记不太清了。只记得里面也是用到了FOR循环和IF语句,用到了End(xlUp).Row,然后好象是通过以CELLS(i,j)形式,对其行标进行循环,判断下一行与上一行的相同(即姓名相同)的,将书名合并到同一行。
    只是这样在使用前需要先对数据按姓名进行排序。虽然需要多进行这一步,但是代码看上去好象比较简洁易懂。不知如果在数据已排好序的前提下,能使代码更加简洁些吗?
    不好意思,是我的水平问题,所以有些强人所难了,如果没时间就不必理会了。

感谢你的帮助,你的代码完全能达到我的要求。只是我刚接触VBA,水平有限,对数组的应用不是很熟悉,所以看这段代码时有些不理解。
我曾经见到过不是通过数组的方式来编写这段代码的,也能达到同样的要求,但是对具体的语句记不太清了。只记得里面也是用到了FOR循环和IF语句,用到了End(xlUp).Row,然后好象是通过以CELLS(i,j)形式,对其行标进行循环,判断下一行与上一行的相同(即姓名相同)的,将书名合并到同一行。
    只是这样在使用前需要先对数据按姓名进行排序。虽然需要多进行这一步,但是代码看上去好象比较简洁易懂。不知如果在数据已排好序的前提下,能使代码更加简洁些吗?
    不好意思,是我的水平问题,所以有些强人所难了,如果没时间就不必理会了。

感谢你的帮助,你的代码完全能达到我的要求。只是我刚接触VBA,水平有限,对数组的应用不是很熟悉,所以看这段代码时有些不理解。
我曾经见到过不是通过数组的方式来编写这段代码的,也能达到同样的要求,但是对具体的语句记不太清了。只记得里面也是用到了FOR循环和IF语句,用到了End(xlUp).Row,然后好象是通过以CELLS(i,j)形式,对其行标进行循环,判断下一行与上一行的相同(即姓名相同)的,将书名合并到同一行。
    只是这样在使用前需要先对数据按姓名进行排序。虽然需要多进行这一步,但是代码看上去好象比较简洁易懂。不知如果在数据已排好序的前提下,能使代码更加简洁些吗?
    不好意思,是我的水平问题,所以有些强人所难了,如果没时间就不必理会了。
}

我要回帖

更多关于 两个工作簿怎么合并 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信