Нужно склеить содержимое ячеек в таблице через запятую(обязательное условие), не принимая во внимание пустые ячейки.
Нашел в интернете описание подходящей функции =ОБЪЕДИНИТЬ(Разделитель; Пропускать_ли_пустые_ячейки; Диапазон1; Диапазон2 ... ) , которая должна присудствовать в excel 2016 и позднее, но у меня почемуто в excel 2016 ее нету, или както по другому называется?...
Буду ОЧЕНЬ благодарен за помощь. Фото и файл примера прикрепляю.
Sub iConcatenate()
Dim i As Long
Dim iLastRow As Long
Dim j As Integer
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("E2:E" & iLastRow).ClearContents
For i = 2 To iLastRow
For j = 1 To 4
If Cells(i, j) <> "" Then
Cells(i, "E") = Cells(i, "E") & Cells(i, j) & ","
End If
Next
If Cells(i, "E") <> "" Then
Cells(i, "E") = Left(Cells(i, "E"), Len(Cells(i, "E")) - 1)
End If
Next
End Sub
Мне к сожалению непонятно как применять этот код к большим таблицам. Очень подходит функция =ОБЪЕДИНИТЬ но почемуто нету в моем екселе, может посоветует кто, в какой версии она есть, у меня excel 2016.
Здравствуйте. Я себе сделал аналог этой функции на ВБА, есть даже дополнительный функционал.
Код
Function ВСТРОКУ(Диапазон_ячеек As Range, Optional Разделитель As String = " ", _
Optional Игнорировать_пустые As Boolean = True, Optional В_обратном_порядке As Boolean = False) As String
Dim myLine As String, countCells As Integer, CounerN As Integer, rngTemp As Range
Select Case В_обратном_порядке
Case False Or 0
If Игнорировать_пустые = True Or Игнорировать_пустые = 1 Then
For Each Cell In Диапазон_ячеек.Cells
If Not IsEmpty(Cell) Then
myLine = myLine & Cell.Text & Разделитель
End If
Next Cell
ВСТРОКУ = Application.WorksheetFunction.Trim(Left(myLine, Len(myLine) - Len(Разделитель)))
ElseIf Игнорировать_пустые = False Or Игнорировать_пустые = 0 Then
For Each Cell In Диапазон_ячеек.Cells
myLine = myLine & Cell.Text & Разделитель
Next Cell
ВСТРОКУ = Left(myLine, Len(myLine) - Len(Разделитель))
End If
Case True Or 1 '---------------------True Or 1---------------------
countCells = Диапазон_ячеек.Cells.Count
Set rngTemp = Диапазон_ячеек
If Игнорировать_пустые = True Or Игнорировать_пустые = 1 Then
For CounerN = countCells To 1 Step -1
If Not IsEmpty(rngTemp.Cells(CounerN)) Then
myLine = myLine & rngTemp.Cells(CounerN).Text & Разделитель
End If
Next CounerN
ВСТРОКУ = Left(myLine, Len(myLine) - Len(Разделитель))
ElseIf Игнорировать_пустые = False Or Игнорировать_пустые = 0 Then
For Each Cell In Диапазон_ячеек.Cells
myLine = myLine & rngTemp.Cells(countCells - CounerN).Text & Разделитель
CounerN = CounerN + 1
Next Cell
ВСТРОКУ = Left(myLine, Len(myLine) - Len(Разделитель))
End If
End Select
End Function
DANIKOLA написал: Здравствуйте. Я себе сделал аналог этой функции на ВБА, есть даже дополнительный функционал.
Спасибо, открыл Ваш файл и все работает, а в другом файле не работает.
Как мне пользоватся Вашим кодом, всегда копировать нужную таблицу в Ваш файл, или можно код перенести в мой файл? Как перенести код чтобы он работал в моем файле? Я полный чайник.