Excel文本格式宏

Excel文本格式宏,excel,vba,Excel,Vba,我试图将一个名称列表(每个名称位于单独的单元格中)转换为一个列表,在每个名称之前加上#和逗号,然后组合成一个单元格。我将使用哪种类型的宏来实现这一点。因此: Help Me Please Thank You 进入(单个单元格): 谢谢请尝试以下代码: function convertNames(startRow as long,endRow as long,column as long) as string dim result as string for c=sta

我试图将一个名称列表(每个名称位于单独的单元格中)转换为一个列表,在每个名称之前加上#和逗号,然后组合成一个单元格。我将使用哪种类型的宏来实现这一点。因此:

Help 

Me 

Please 

Thank 

You 
进入(单个单元格):

谢谢

请尝试以下代码:

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)
替换所需的起始行、结束行和列索引。

尝试此功能:

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
它的灵感来源于sigil的答案,但这个答案适用于一个范围,并允许Excel管理对单元格的引用。Sigil的功能应该是并且会减慢大文件的速度


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

谢谢!它只显示#、#、#,而不是a列和#、、中的值。可能是用户错误,但会喜欢你的想法!您是将VBA函数放在调用它的同一工作表中,还是将它放在自己的模块中?如果它在自己的模块中(或在不同的工作表中),则需要通过将
单元格(c,列)
更改为
工作表(“工作表名称”)。单元格(c,列)
来指定工作表。同意易失性函数问题。这是一个更好的解决方案,因为它允许您在任何范围内传递,因此不会出现工作表引用问题,这可能会影响您使用我的解决方案。谢谢你。
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