2013-08-06 43 views
0

我试图将每个单独的单元格中的名称列表转换为每个名称后面都带有#的列表,并将其组合为单个单元格。我会使用什么类型的宏。所以:用于Excel的文本格式宏

Help 

Me 

Please 

Thank 

You 

进(单细胞):

#help, #me, #please, #thank, #you 

感谢

回答

1

试试这个代码:

function convertNames(startRow as long,endRow as long,column as long) as string 

dim result as string 

for c=startRow to endRow 
result=result & "#" & Cells(c,column) & ", " 
next 

result=left(result,len(result)-2) 

convertNames=result 

end function 

你会调用该函数在单元格中要显示结果为:

=convertNames(5,12,2) 

代替您需要的开始行,结束行和列索引。

+0

谢谢!它仅显示#,#,#,而不是列a和#中的值。可能是用户错误,但会爱你的想法! – amjkell

+0

您是否将VBA函数放在您调用它的同一个工作表中,或者是否将它放在了它自己的模块中?如果它在自己的模块中(或在不同的工作表中),则需要通过将'Cells(c,column)'更改为'Sheets(“nameOfWorksheet”)来指定工作表。单元格(c,column)'。 – sigil

1

试试这个功能:

Function ConvertNames(List As Range) As String 
    Dim C As Range 

    For Each C In List 
    ConvertNames = ConvertNames & "#" & C.Value2 & ", " 
    Next C 

    ConvertNames = Left(ConvertNames, Len(ConvertNames) - 2) 
End Function 

它由印记的回答启发,但射程这一个工程,并允许Excel管理单元格引用。 Sigil的功能应该是volatile,并会减慢大文件。

您需要在项目中添加一个模块并将该函数放入模块中。然后你可以在使用它的单元上输入=ConvertNames(A1:A5)来使用它。

+0

就易失性功能问题达成一致意见。这是一个更好的解决方案,因为它可以让你传入任何范围,因此没有工作表引用问题,可能会影响我的解决方案。谢谢stenci。 – sigil