У меня есть файл Excel с одним исходным листом, содержащим много столбцов. Столбец 1 представляет собой текст, а столбец 2 и далее может иметь любой формат.

То, что я хочу, это еще 27 листов в том же файле с именем #, A, B, ... Y, Z.

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

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

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

Я боролся и пробовал много вещей, таких как группировка и фильтрация и что-если, но не смог понять, как они работают.

Как я могу сделать это?

1 ответ1

2

Не забудьте сделать резервную копию вашего файла перед выполнением всего этого.

Вместо того, чтобы filter , вы должны sort по первому столбцу, который сгруппирует данные вместе. Оттуда вы можете выбрать строки данных, которые вы хотите переместить, а затем вырезать и вставить их на нужный вам лист.

Если некоторые элементы выглядят не по порядку, имейте в виду следующее из раздела Как правильно сортировать буквенно-цифровые данные в Excel:

При сортировке столбца, содержащего буквенно-цифровые символы, сортировка может возвращать неожиданные результаты. Excel сортирует значения слева направо, символ за символом. Например, если ячейка содержит текст "A100", Excel помещает ячейку после ячейки, содержащей запись "A1", и перед ячейкой, содержащей запись "A11".


Вы можете создавать вкладки вручную. Если вы еще этого не сделали и хотите автоматизировать создание вкладок, вы можете использовать этот код, вставленный в ThisWorkbook в проводнике VBA (Alt+F11). Затем запустите AddWorksheets из окна макроса (Alt+F8). Когда вы закончите, вы можете вернуться и удалить его из окна макроса.

Option Explicit
Option Base 1

Sub AddWorksheets()

    Dim Tabs As Variant
    Dim I As Byte
    Tabs = Array("#", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")

    For I = LBound(Tabs) To UBound(Tabs)
        Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Tabs(I)
    Next I

End Sub

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