Похожие вопросы

Excel, " вы ввели слишком много аргументов для этой функции"
Добавление столбца кумулятивной суммы в сводную таблицу
Как вызвать функцию Power Query M из внешней книги?
Неточные даты отображаются в Excel (даты вычисляются с 1904 вместо 1900)
Excel: как фильтровать значения в сводной таблице, чтобы отображались только строки с последней датой
Excel зависает при копировании нескольких ячеек несколько раз [дубликат]
Excel добавляет двойные кавычки при экспорте csv [дубликат]
IExcel не сравнивает даты правильно
Как заставить excel вернуть дату из столбца, соответствующего последнему "да" в другом столбце
Как перенести часть текста из одной ячейки в другую
Формулы Excel вернуть значение ячейки если несколько критериев
Как разбить таблицу, содержащую CSV, на несколько столбцов?
Как выполнить надстройку Excel 2010?
Отключить возможности "создать ярлык "и" отправить на рабочий стол " через Excel?
Усиленная Формула ВПР В Excel

Увеличение столбцов VBA Excel

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

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

ниже приведен код, с которым я работал. Я пытаюсь использовать идентификацию ячеек для увеличения номера столбца, но я получаю ошибку определения приложения или определения объекта 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, пока строка не закомментирована, потому что я пытаюсь получить идентификатор ячеек для работы, прежде чем пытаться увеличить.

что я делаю не так?

5
задан Raystafarian
источник

2 ответов

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

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

Range не любит одиночные ссылки Cells ().

4
отвечен Scott Craner 2016-04-18 14:55:27
источник

Скотт абсолютно прав (+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
2
отвечен Raystafarian 2016-04-18 17:44:43
источник

Другие вопросы microsoft-excel microsoft-excel-2013 vba