Как L oop через диапазон и присвоить значение параметру - PullRequest
4 голосов
/ 15 апреля 2020

Я столкнулся с проблемой, связанной с кодом VBA в Excel, и надеюсь, что кто-нибудь может помочь мне в этом.

У меня есть столбец Excel, который находится в диапазоне B2 до последней строки столбца B, как показано ниже:

_________________
|Column B Header|
|===============|
|apple          |
|orange         |
|strawberry     |
|blueberry      |
|_______________|

Я хочу присвоить все значение в ячейке B параметру с некоторым дополнительным текстом.

Например:

fruits = <Item>apple</Item><Item>orange</Item><Item>strawberry</Item><Item>blueberry</Item>

Пока это мой код, я мне трудно заставить каждое значение продолжать указывать после каждого прочтения ячейки.

Dim c As Range
For each c In Range("B2:B" & lastrow)
   fruits = "<Item>" & c.Value & "</Item>"
Next c

Я очень ценю, если кто-нибудь захочет помочь мне в этом. Спасибо.

Ответы [ 3 ]

3 голосов
/ 15 апреля 2020

Чтобы продолжить создание строки при l oop, объедините fruits с собой:

fruits = fruits & "<Item>" & c.Value & "</Item>"
2 голосов
/ 15 апреля 2020

или вы можете избежать зацикливания

Dim fruits As String
fruits = "<Item>" & Replace(Join(Application.Transpose(Range("B2", Cells(Rows.Count, 2).End(xlUp)).Value), "|"), "|", "</Item><Item>") & "</Item>"
1 голос
/ 15 апреля 2020

Функция без циклов плюс имя переменной тега

Function JoinedItems(rng As Range, Optional tag As String = "item") As String
    Dim a$, b$: a = "<" & tag & ">": b = "</" & tag & ">"
    JoinedItems = a & Evaluate("=TEXTJOIN(""" & b & a & """, False," & rng.Address & ")") & b
End Function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...