Как преобразовать один столбец в несколько столбцов? - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь преобразовать один столбец в несколько столбцов.

Set rng1 = Range("A3")
Set rng2 = Range("A16")
Set rng3 = Range("B3")
Set rng4 = Range("A16")

For Each R In Intersect(Range("A1:A5000"), ActiveSheet.UsedRange)

    If InStr(R, "Sunday") > 0 Then

        Range("C1").Value = 5

        If rng2.Row > rng1.Row Then
            Range("C1").Value = 6
            Range("F3").EntireColumn.Insert
            Range("F3").EntireColumn.Insert
            Range("C1").Value = 9
            Range(rng2, rng3.End(xlUp)).Cut
            Range("C1").Value = 10
            Range("F3").PasteSpecial
            Range("C1").Value = 7

В строке PasteSpecial происходит сбой.

Ошибка времени выполнения 1004 Ошибка приложения или объекта

I ' В настоящее время я пытаюсь вставить его выше A1.

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

РЕДАКТИРОВАТЬ: Попытался удалить PasteSpecial и просто вставить его с помощью метода вырезать, но все равно не удается.

РЕДАКТИРОВАТЬ: пробовал линии

Range("F1").Value2 = Range(rng2, rng3.End(xlUp)).Value2

В качестве замены для вырезания и вставки, все еще выдает мне ту же ошибку. Хотя код продолжается в прошлом. Он также ничего не вставляет.

РЕДАКТИРОВАТЬ: Uhh, поэтому он копирует записи сейчас, но не значения, которые я хочу, и только один.

1 Ответ

1 голос
/ 28 февраля 2020

Что если вы обойдете метод вставки, непосредственно присвоив значения из одной ячейки в другую:

Sheet2.Range("A2:B3").value2 = Sheet1.Range("A2:B3").value2

Быстрее и чище, его также можно использовать с массивами и переменными. Таким образом, вы можете разбить диапазон на желаемое количество массивов, а затем использовать приведенный выше код для переноса значений в нужные столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...