2013-08-06 8 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 в тот же рабочий лист, где вы его вызываете, или вы поместили его в свой собственный модуль? Если он находится в собственном модуле (или в другом листе), вам нужно указать рабочий лист, изменив «Ячейки (c, column)» на «Таблицы» («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 

Он вдохновлен ответ Sigil, но это один работает с диапазоном, а также позволяет управлять Excel ссылки на ячейки. Функция Sigil должна быть volatile и будет замедлять большие файлы.

Вам необходимо добавить модуль в проект и поместить эту функцию в модуль. Затем вы можете использовать его, введя =ConvertNames(A1:A5) в ячейку, которая его использует.

+0

Согласовано с проблемой энергозависимой функции. Это лучшее решение, так как оно позволяет вам проходить в любом диапазоне и, следовательно, не имеет ссылки на справочные материалы, которые могут повлиять на вас с моим решением. Спасибо stenci. – sigil