2015-06-02 28 views
0

我曾与各种值工作表中只有一个像柱:复制行到一个单元格VBA

A 
B 
C 
D 
E 
F 
... 

我需要写一个简单的代码,将在一个细胞把这一切在一起(例如D2)和细胞我想有一个值:

A;B;C;D;E;F;... 

我认为这是很容易的,但我病得想想,你会帮忙吗? :(

+0

到目前为止,你有尝试过什么吗?你想要基于Excel的解决方案还是基于VBA?您是否在[网站](http://stackoverflow.com/q/11678370/1389394)中搜索类似的解决方案?你在本页右下角看到**相关的问题吗? – bonCodigo

+0

Excel解决方案很简单,我使用它很长一段时间,但现在我无法使用它(列表正在更改)并需要升级我的代码。我试图通过SQL基础来编写它,但我觉得它绝对没用。我只写了'recordNumber = Cells.Find(What:=“*”,SearchDirection:= xlPrevious,SearchOrder:= xlByRows).Row' – Michal

回答

2

在一个简单的形式,下面的VBA宏可以做的工作(假设你在Excel工作表的列A中要连接和结果置于D2单元格的值):

Sub ConcatenateCells() 
Dim i As Integer 
Dim count As Integer 
Dim s As String 
count = Cells(Rows.count, "A").End(xlUp).Row 
For i = 1 To count 
    s = s & Cells(i, 1) & ";" 
Next 
Range("D2") = s 
End Sub 

你可以修改你的目的此外,您可以通过添加条件中排除空单元格:。

If Cells(i, 1).Value <> "" Then s = s & Cells(i, 1).Value & ";" 

希望这可以帮助最好的问候,

+0

就像我想的那样...感谢:) – Michal

+0

欢迎您!祝你的项目好运。最好的问候, –

+0

一个问题,在字符串's'我只有';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# ',不应该是'Cells(i,1).Value'? – Michal

2

如果你哈d一派,你可能会在this link绊倒,这是使用Excel公式做的相当时髦的方式..

=CONCATENATE(TRANSPOSE(A1:A6 & ";")) 

你只需要确保执行TRANSPOSE功能使用F9之前。

但是,您总是可以使用VBA用户定义函数来完成它。

+1

一个非常好的技巧!值得回忆。 –

相关问题