ОК, так что у меня есть очень специфическая проблема, которую я надеюсь решить без проблем, но мне нужна помощь. Я неофит, когда дело доходит до создания макросов.
У меня есть клиент, который поместил длинные списки ссылок в один столбец в Excel (обычно ссылки находятся только в одной ячейке). Я выяснил, как объединить выбранную часть столбца ссылок в одну ячейку (см. Мою процедуру ниже), но я действительно хотел бы превратить это в макрос, который делает это мгновенно.
Проблема в том, что я хотел бы иметь возможность запускать макрос для выделения, то есть я хотел бы выбирать ячейки и запускать макрос только на этих ячейках. Затем я могу выбрать ячейки, запустить макрос, сделать другой выбор, запустить макрос и т. Д. Это значительно ускорит мою работу.
Моя проблема: Я не могу понять, как заставить макрос работать только на выделении . Макросы, которые я записал, запускаются только на выбранных мною при записи макроса. Есть ли способ сделать макрос универсальным, чтобы я мог выбрать ячейки, а затем запустить макрос на них?
Объединение ссылок в Excel
- Допустим, ссылки, которые вы хотите объединить, находятся в E18: E27
- Создайте новый столбец рядом со столбцом условного обозначения для консолидированных ссылок
- В пустой ячейке в новом столбце, где вы хотите объединить все значения, введите:
- = CONCATENATE (транспонирование (
- Затем выберите ячейки, которые нужно объединить
- Формула изменится на = CONCATENATE (TRANSPOSE (E18: E27
- Пока не нажимайте ввод.
- Нажмите после последней ссылки на ячейку и нажмите пробел
- Введите оператор &
- Тип ”,” (двойная кавычка, запятая, пробел, двойная кавычка)
- Это добавит запятую и пробел после каждой ссылки
- Выберите TRANSPOSE (E18: E27 & "," и нажмите клавишу F9 (F9 заменяет формулы значениями)
- Это заменяет TRANSPOSE (E18: E27 & "" с его результатом, {"E18", "E19", "E20", "E21,", "E22,", "E23,", "E24 , "," E25, "," E26 "," E27, "}
- Теперь удалите фигурные скобки {и}
- Формула теперь будет выглядеть как = CONCATENATE («E18», «E19», «E20», «E21», «E22», «E23», «E24», «E25, "," E26 "," E27 ",
- Выберите всю формулу, включая знак =, и нажмите F9
- Нажмите Enter
- Готово!
Примечание: это работает только для 256 ссылок. Уже не так и формула выдаст ошибку. Если есть какой-либо способ изменить его, чтобы он работал больше, пожалуйста, дайте мне знать .
Вот код, который я получаю только с помощью записи макроса, описанной выше, с включенными «относительными ссылками». Я не знаю, поможет ли это мне или нет.
Sub ConsolidateReferencesMacro2()
'
' ConsolidateReferencesMacro2 Macro
'
'
ActiveCell.Offset(-1, 3).Range("A1").Select
ActiveCell.FormulaR1C1 = _
"U102, U103, U104, U105, U199, U200, U201, U202, U204, U205, U206,
U207, U232, U233, U234, U235, U245, U246, U44, U45, U65, U66, "
With ActiveCell.Characters(Start:=1, Length:=128).Font
.Name = "Calibri"
.FontStyle = "Regular"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Я не вижу «Concactencate» и «Transpose», поэтому я не знаю, что на самом деле происходит в этом фрагменте кода.