Ну, с точки зрения термина, Excel Формулы и Excel VBA - это не одно и то же.
На самом деле, здесь много людей, которые являются профессионалами формулы, которые ничего не знают о VBA и наоборот.
Это, как говорится, вы могли бы использовать что-то вроде:
=IF(COUNTBLANK(C1:N1)=0,A1&" "&B1,A1)
Конечно, при условии, ваши данные выглядит следующим образом:
Было бы проще в использовании:
=IF(N1="",A1,A1&" "&B1)
Конкатенация в формулах Excel и VBA довольно проста ,
Просто отделите строки, которые вы хотите объединить с amperstand &
Если я хочу, чтобы сцепить A1 и B1, я могу использовать =A1&B1
, как показано в формуле.
Если я хочу, чтобы добавить пробел, или даже слово, я могу просто добавить между ними в виде строки:
=A1&" is way cooler than "&B1
Edit:
VBA:
Sub ConcatenateCells()
Application.ScreenUpdating = False
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If InStr(c, ",") > 0 Then c = c & c.Offset(0, 1)
'You could also add a space between the two using c = c & " " & c.Offset(0, 1)
Next c
Application.ScreenUpdating = True
End Sub
Я не знаю, хотите ли вы загрузить данные после того, как вы сориентировали значения, но если вы это сделаете, вы можете использовать это:
Sub ConcatenateAndScootCells()
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If InStr(c, ",") > 0 Then
c = c & c.Offset(0, 1)
c.Offset(0, 1).Delete xlToLeft
End If
Next c
End Sub
Тем не менее при условии, я получил свой формат данных правильно, вот что до и после того, как выглядит следующим образом:
Final Edit:
Если вы абсолютно настаиваете на подсчете количества использованных строк вместо sim ply ищет кому в столбце A, а затем используйте это:
Sub ConcatenateAndScootCells()
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If Cells(c.row, Columns.Count).End(xlToLeft).Column = 13 Then
c = c & " " & c.Offset(0, 1)
c.Offset(0, 1).Delete xlToLeft
End If
Next c
End Sub
Простите терминологию, я работаю над кодом VBA, чтобы исправить проблему выше, чем формульный подход. Ваш пример был на месте, но поскольку я ищу код для исправления, могу ли я использовать тот же конкатенат A1 & B1, который вы указали выше? –
Да. Вы можете использовать «Ячейки (1, 1) и ячейки (1, 2)» или «Диапазон (« A1 ») и диапазон (« B1 »)' – user1274820
Я отредактировал ответ с кодом VBA, чтобы сделать это. Вместо того, чтобы считать ячейки справа от него, я просто искал кому. Если вы хотите считать ячейки справа, вы тоже можете это сделать. – user1274820