Я пытаюсь объединить несколько столбцов различной длины в один столбец на другом листе, чтобы обеспечить возможность просмотра из этого столбца.

Я могу легко перейти вниз по первому столбцу, но у меня возникают проблемы при переходе к следующему столбцу.

Ниже приведен код, с которым я работал. Я пытаюсь использовать идентификацию ячеек для увеличения номера столбца, но получаю ошибку определения приложения или объекта 1004.

Sub TestTwo()
   Sheets("Transposed").Activate
   Dim row As Double

   row = 3

  'Do Until Sheets("Transposed").Range("B" & row).Value = ""
   Do Until Sheets("Transposed").Range(Cells(row, "B")).Value = ""

  Sheets("OneList").Range("B" & row - 1).Value = Sheets("Transposed").Range("B" & row).Value
row = row + 1

Loop


End Sub

Первая операция do, пока строка не закомментирована, потому что я пытаюсь заставить работать идентификатор ячейки, прежде чем увеличивать ее.

Что я делаю неправильно?

2 ответа2

4

Range() ищет адрес или диапазон ячеек. Используйте ячейки () отдельно:

Do Until Sheets("Transposed").Cells(row, "B").Value = ""

Range не похож на одну ссылку Cells().

2

Скотт абсолютно прав (+1). Но я бы подошел к этой проблеме немного иначе, чем вы с циклами For . Таким образом, вы можете быть более точным и отслеживать, что все делает, если вам нужно увеличить

Option Explicit
Sub CombineColumns()
    Dim sourceColumns As Long
    Dim lastRow As Long
    Dim combinedRow As Long
    combinedRow = 1
    Dim sourceRows As Long

    For sourceColumns = 2 To 4 'B, C, D or whatever your range is
        lastRow = Cells(Rows.Count, sourceColumns).End(xlUp).Row
        For sourceRows = 1 To lastRow
            Sheet2.Cells(combinedRow, 1) = Cells(sourceRows, sourceColumns)
            combinedRow = combinedRow + 1
        Next
     Next sourceColumns
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .