объединение значений строк на основе «если пусто или нет»

#excel #vba

#excel #vba

Вопрос:

На самом деле я преобразовал pdf в Excel. После преобразования следующая строка преобразуется в следующую строку. Я хочу объединить содержимое при следующем условии.

Если в строке 1 и строке 2 есть текст, поместите содержимое строки 2 в строку 1 (в дополнение к существующему) и очистите содержимое строки 2. Если строка 2 пуста, она должна сохранить содержимое строки 1 и перейти к следующей строке.

Я попробовал два макроса. Но они не дают желаемого результата

 Sub cc()
Dim X As Integer

For X = 1 To 500
 'If Sheet2.Cells(X   1, 1)  isNotBlank Then
 If Not IsEmpty(Sheet2.Cells(X   1, 1).Value) And Not IsEmpty(Sheet2.Cells(X, 1).Value) Then
 
    Sheet2.Cells(X   1, 1).ClearContents
  End If
 
Next

End Sub

Sub ccc()
Dim X As Integer

For X = 1 To 500
 'If Sheet2.Cells(X   1, 1)  isNotBlank Then
 If Not IsEmpty(Sheet2.Cells(X   1, 1).Value) And Not IsEmpty(Sheet2.Cells(X, 1).Value) Then
    If Not IsEmpty(Sheet2.Cells(X, 1).Value) Then
        Sheet2.Cells(X, 1).Value = Sheet2.Cells(X, 1)
 
    Sheet2.Cells(X   1, 1).ClearContents
  End If
 
Next

End Sub
  

Комментарии:

1. Вместо IsEmpty я бы использовал Sheet2.Cells(X 1, 1).Value <> vbNullString или, может быть, даже Trim(Sheet2.Cells(X 1, 1).Value) <> vbNullString

2. Просто заметил, что вы не объединяете значения ячеек. Вы что-то упускаете Sheet2.Cells(X, 1).Value = Sheet2.Cells(X, 1).Value amp; vbCrLf amp; Sheet2.Cells(X 1, 1).Value . Замените vbCrLf на что-то другое, если вам не нужна новая строка.