Как в excel макрос ссылка на другой макрос

This is a tip for referencing macros from other modules without having to remember exactly its name.

This works really well when you segment your modules by category or type or any other logical system where you can look at the module name and know which types of macros are inside of them.

As well, this tip allows you to avoid ambiguous naming issues with your macros if you reuse the same names for multiple macros (procedures).

Additional Resources

Reference Other Macros (msft)


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Similar Content on TeachExcel

Select Ranges of Cells in Excel using Macros and VBA

Tutorial: This Excel VBA tutorial focuses specifically on selecting ranges of cells in Excel.  This…

Get Data from Separate Workbooks in Excel

Tutorial: How to get data from separate workbooks in Excel. This tutorial includes an example using …

Combine Values from Multiple Cells into One Cell in Excel

Tutorial: There are two easy ways to combine values from multiple cells in Excel.
In order to do thi…

Using Formulas with Tables in Excel

Tutorial:
Easy way to reference data tables and make formulas within a data table. This allows you …

Extract the First Word from a Cell in Excel — User Defined Delimiter Text Extraction — UDF

Macro: This free Excel UDF (user defined function) returns the first word from a cell in Exce…

Output the File Path to and Name of a Workbook in Excel — UDF

Macro: Free Excel UDF (user defined function) that displays the full file path and name of an Exc…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons

50+ Hours of Video

200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

#1

22.11.2022 11:10:38

Добрый день!
Подскажите, как сделать ссылку в макросе на другой лист из текущей книги :

Код
  ActiveWorkbook.SaveAs path & Application.PathSeparator & ActiveSheet.Name & " " & Range("B10") & ".xlsx"

Вместо ячейки «B10» нужно указать «Лист1, ячейка B10»

Изменено: HYPNO22.11.2022 11:16:50

 

Sheets(«Лист1»).Range(«B10»)

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Роман Петров, ошибка, выделяет строку желтым цветом

 

формат файла сделайте .xlsm

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Роман Петров, у меня книга в двоичном формате xlsb, макрос работает, нужно только ссылку привязать к другому листу

 

формат .xlsm поддерживает макросы. Как вы хотите сохранить файл с макросом без соответствующего разрешения?
Знак вопроса указан в коде в вашем первом сообщении.

Изменено: Роман Петров22.11.2022 11:25:01

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#7

22.11.2022 11:25:55

Цитата
написал:
выделяет строку желтым цветом

1. Какую строку?
2. Какую ошибку пишет?
3. B10 точно английскими буквами записана? Лист «Лист1» точно есть в текущей книге?
4. Если указываете сохранение файла из одного формата в другой(в Вашем случае возможно это из xlsb в xlsx) — обязательно указание параметра FileFormat с соответствующим форматом.

Изменено: Дмитрий(The_Prist) Щербаков22.11.2022 11:27:19

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Worksheets(XXX) ссылка на лист ХХХ
где ХХХ
— номер листа (число 1,2,3… 100)
— имя листа («Итоги». «Данные», «Лист1» и т.д. и т.п.)

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Роман Петров, смотрите:
есть книга в формате *.xlsb , в которой данный макрос с сохранением отдельного листа в файл с разрешением *.xlsx
формат *.xlsb поддерживает макросы,у меня их там целый десяток и все работают
в книгу, которая формируется и сохраняется данным макросом — не нужно менять разрешение, это ни к чему.

но при замене «& Range(«B10″) &» на «& Sheets(«Лист1»).Range(«B10″) &» — макрос не запускается, выделяя строку желтым.
Если оставить «& Range(«B10″) &» — все работает, но име не то, которое я хочу присвоить файлу

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#10

22.11.2022 11:31:25

Цитата
HYPNO написал:
но при замене «& Range(«B10″) &» на «& Sheets(«Лист1»).Range(«B10»)

угадайте, в чем причина? Может в имени листа, которое записано неверно? Других вариантов нет. Может быть в активной книге «Лист1» записан с пробелом в начале или в конце или еще где-то. Не пробовали взять и скопировать имя из ярлыка листа и вставить в код как есть?

Цитата
HYPNO написал:
есть книга в формате *.xlsb , в которой данный макрос с сохранением отдельного листа в файл с разрешением *.xlsx
не нужно менять разрешение, это ни к чему.

прочтите мое предыдущее сообщение, чтобы было понимание происходящего. Меня xlsx на другой не надо — а вот добавить параметр FileFormat — надо.

Изменено: Дмитрий(The_Prist) Щербаков22.11.2022 11:34:15

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

#11

22.11.2022 11:33:30

Ігор Гончаренко, вот так?

Код
ActiveWorkbook.SaveAs path & Application.PathSeparator & ActiveSheet.Name & " " & Worksheets("Лист1").Range("B10") & ".xlsx"
 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Дмитрий(The_Prist) Щербаков, при сохранении в xlsx работает без FileFormat, если менять на xlsm — то нужно указывать FileFormat.
Но, повторяю третий раз, книга должна сохраняться в xlsx, нужно только поменять ссылку, все, не более.

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

 

ActiveWorkbook.SaveAs Filename:=» » & » » & Worksheets(«Лист1»).Range(«B10»), FileFormat:=xlOpenXMLWorkbookMacroEnabled

Выделил жирным сам формат. Какой вам надо, исправите сами.
Кстати, Worksheets или sheets одинаково работают в этом случае)

Изменено: Роман Петров22.11.2022 11:45:01

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#14

22.11.2022 11:56:26

Цитата
HYPNO написал:
Но, повторяю третий раз

да хоть пятый. Дело Ваше. Поверьте, я насохранял кодами файлов куда больше Вашего и знаю, о чем пишу. Вы можете делать как угодно.
Что до ошибки — Вы явно чего-то не учитываете. Скиньте хотя бы скрин экрана в момент ошибки и скрин книги, которая активная на данный момент. есть подозрение, что в активной на данный момент книге нет листа с именем «Лист1».
Да, и текст с номером ошибки тоже не помешает — а то может проблема вообще в пути к файлу…

Изменено: Дмитрий(The_Prist) Щербаков22.11.2022 11:57:52

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

полагаю можно приостановить конкурс на лучшего отгадывателя причины
подождать пока автор выложит файл и тогда просто ответить на вопрос почему Excel не хочет выполнять определенную строку)

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Дмитрий(The_Prist) Щербаков, файл примера (работающий без ссылки на Лист1) прикладываю

Прикрепленные файлы

  • Пример.xlsb (29.83 КБ)

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#17

22.11.2022 12:35:37

Цитата
HYPNO написал:
работающий без ссылки на Лист1

Вы бы еще написали, какое конкретно значение было в B10. В текущем файле невозможно сохранить, т.к. в тексте есть двоеточие.
Но если его поменять на корректное — никаких ошибок. Поэтому повторю:

Цитата
Дмитрий(The_Prist) Щербаков написал:
Скиньте хотя бы скрин экрана в момент ошибки и скрин книги, которая активная на данный момент. есть подозрение, что в активной на данный момент книге нет листа с именем «Лист1».Да, и текст с номером ошибки тоже не помешает — а то может проблема вообще в пути к файлу…

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Дмитрий(The_Prist) Щербаков, Наименование — любое слово, например «Колесо».
не будет никаких символов, спецзнаков и тд. обычное слово.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#19

22.11.2022 13:18:55

Цитата
HYPNO написал:
Наименование — любое слово, например «Колесо»

еще раз

Цитата
Дмитрий(The_Prist) Щербаков написал:
Но если его поменять на корректное — никаких ошибок. Поэтому повторю:

мы так и будем в гадалки играть или уже увидим текст ошибки и все остальное, что я просил? Тут куча вариантов: от неверного пути, до отказа в доступе. Без этого помочь нечем — код отрабатывает на ура, никаких ошибок не выдает.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#21

22.11.2022 13:41:06

А где же хваленое расширение xlsx на скрине в строке сохранения? Хотя и без него отработает — но лучше добавлять. Далее, для xlsx тип xlOpenXMLWorkbook, а не xlOpenXMLStrictWorkbook.
Скрина с активной книгой так и не увидел, увы. Поэтому могу только предложить дописать корректно строку сохранения:

Код
ActiveWorkbook.SaveAs path & Application.PathSeparator & ActiveSheet.Name & " " & ActiveWorkbook.Worksheets("Лист1").Range("B10").Value & ".xlsx", FileFormat:=xlOpenXMLWorkbook

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

New

Пользователь

Сообщений: 4582
Регистрация: 06.01.2013

у несохранённой книги не может быть Thisworkbook.path, path — пусто. На сколько вижу по Screenshot_6.jpg

Изменено: New22.11.2022 13:50:31

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#23

22.11.2022 13:55:26

Цитата
New написал:
у несохранённой книги не может быть Thisworkbook.path

так path назначается ДО метода Copy — а значит путь берется из книги с кодом. А она, как я понял — сохранена где-то.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

Дмитрий(The_Prist) Щербаков, не работает ваша предложенная строка, объясню почему:
для чего я прислал образец файла ? — макрос запускается с кнопки со второго листа под наименованием «НД», именно поэтому и нужна ссылка для макроса на Лист1!!!
В таком случае опять выдает ошибку.

Если же перейти в «Лист1»  и выполнить данный макрос — то он, конечно , выполнится, но во-первых: это мне не нужно ,а в во-вторых, если я уже нахожусь на «Лист1» — зачем мне ссылки делать? я бы оставил «B10» и все.

Если вы действительно хотите помочь — прошу, откройте файл примера и запустите макрос с кнопке на листе «НД».

Прикрепленные файлы

  • Пример.xlsb (30.27 КБ)

 

New

Пользователь

Сообщений: 4582
Регистрация: 06.01.2013

#25

22.11.2022 14:09:00

Наконец-то домучали ТС, чтобы появился файл

Код
Sub Сохранить_лист()
    Dim path As String, iLinks As Variant, I As Long
    Dim vopros As VbMsgBoxResult
 
    vopros = MsgBox("Сохранить форму?", vbYesNo + vbQuestion, "Сохранение")
    
    Application.ScreenUpdating = False
    
    If vopros = vbYes Then
        path = ThisWorkbook.path
        ActiveSheet.Copy
        iLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
        If Not IsEmpty(iLinks) Then
            For I = 1 To UBound(iLinks)
                ActiveWorkbook.BreakLink Name:=iLinks(I), Type:=xlExcelLinks
            Next I
        End If
    
        If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.Shapes(1).Delete           'удаляю кнопку СОХРАНЕНИЯ в новом файле!!!
        
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs path & Application.PathSeparator & ActiveSheet.Name & " " & Range("B10").Value & ".xlsx", FileFormat:=xlOpenXMLWorkbook
        Application.DisplayAlerts = True
    
        ActiveWorkbook.Close (False)
        MsgBox "Форма сохранена в текущую папку.", vbInformation, "Сообщение:"
    End If
    
    Application.ScreenUpdating = True
End Sub

Изменено: New22.11.2022 14:13:14

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#26

22.11.2022 14:14:05

Цитата
HYPNO написал:
именно поэтому и нужна ссылка для макроса на Лист1!!!

и что? А я на какой лист ссылку поставил?
Вы бы вместо претензий написали что хотите в итоге получить и как что надо делать. Моя строка формирует ровно то, что Вы просили изначально:

Цитата
HYPNO написал:
Вместо ячейки «B10» нужно указать «Лист1, ячейка B10»

А то, что Вы ни разу не понимаете как и что работает — это другой вопрос. Я не просто так просил скрин — а что за активная книга у Вас на момент выполнения ошибочной строки? Посмотрели? Нашли в этой книге «Лист1»? И я думаю, что нет. Да и не хотели, т.к. искали причину только в том, что Вам тут советуют не то что-то. А чтобы посоветовать то, что надо — надо понимать от и до что делается и на какой результат рассчитываете. А Вы заладили «Лист1» — это и получили.
А раз уж такие претензии вместо того, чтобы подумать и сделать наконец то, что просят — вот так будет максимально корректно:

Код
Sub Сохранить_лист()
Application.ScreenUpdating = False
Dim path As String, iLinks As Variant, I As Long
 
vopros = MsgBox("Сохранить форму?", vbYesNo, "Сохранение")
If vopros = vbYes Then
 
    path = ThisWorkbook.path
    Dim sFName$
    sFName = path & Application.PathSeparator & ActiveSheet.Name & " " & ActiveWorkbook.Worksheets("Лист1").Range("B10").Value & ".xlsx"
    ActiveSheet.Copy
    iLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
        If Not IsEmpty(iLinks) Then
            For I = 1 To UBound(iLinks)
            ActiveWorkbook.BreakLink Name:=iLinks(I), Type:=xlExcelLinks
            Next I
        End If
    
    If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.Shapes(1).Delete           'удаляю кнопку СОХРАНЕНИЯ в новом файле!!!
     ActiveWorkbook.SaveAs sFName, FileFormat:=xlOpenXMLWorkbook  'не работает
    
     ActiveWorkbook.Close (False)
     MsgBox "Форма сохранена в текущую папку.", vbInformation, "Сообщение:"
End If
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Интересно, Дмитрий после такой ветки подпись придумал? )

Изменено: МатросНаЗебре22.11.2022 14:17:46

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#28

22.11.2022 14:17:48

Цитата
New написал:
ActiveSheet.Name & » » & Range(«B10»).Value

не то будет. Я намекал на это изначально не раз. Если запустить код из листа НД, то активный будет лист НД, т.к. копируем именно его. И в этой полученной книге нет других листов — только этот НД и все…А новое имя файла именно в книге с кодом в Лист1.
Хотя можно было и иначе, на самом-то деле:

Код
path & Application.PathSeparator & ThisWorkbook.ActiveSheet.Name & " " & ThisWorkbook.Worksheets("Лист1").Range("B10").Value & ".xlsx"

но это не самый правильный путь. Лучше делать через переменную — надежнее и в отладке куда проще и нагляднее.

Изменено: Дмитрий(The_Prist) Щербаков22.11.2022 14:18:40

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

HYPNO

Пользователь

Сообщений: 66
Регистрация: 04.08.2020

New, да файл я еще 2 часа назад прикрепил…

 

New

Пользователь

Сообщений: 4582
Регистрация: 06.01.2013

#30

22.11.2022 14:21:09

Дмитрий(The_Prist) Щербаков, +1, я не прочитал, что написано в ячейке ))

Добрый день.
в VBA не силен, поэтому обращаюсь к вам.
У меня есть макрос который делает фигуру прозрачной по значению в ячейке.
Мне необходимо чтоб название фигуры и значение находились на другом листе,
ну допустим Лист2 ячейка F10.
Соответственно в макросе должна быть ссылка на конкретный лист и ячейку.
К сожалению сделать самому не получилось подскажите вы пожалуйста.
Пример кода.
[vba]

Код

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 2).End(xlUp).Row
arr = Range(Cells(10, 1), Cells(lr, 3)).Value
For Each Shape In ActiveSheet.Shapes
    For i = 1 To UBound(arr)
         If Shape.Name = arr(i, 1) Then
            If arr(i, 2) = 1 Then Shape.Fill.Transparency = 1
            If arr(i, 2) = 2 Then Shape.Fill.Transparency = 0
         End If
    Next
Next
End Sub

[/vba]

Содержание

  • 1 Параметр «Относительные ссылки»
  • 2 Просмотр кода VBA
  • 3 Запуск записанного макроса в Excel
  • 4 Ограничения
  • 5 Как поменять ссылки в формулах на абсолютные?
  • 6 Как поменять ссылки в формулах на относительные?
    • 6.1 Способ преобразования без использования макросов
  • 7 Замечания

По умолчанию, во время записи макроса, все действия по выбору ячеек и диапазонов записываются как абсолютные. Если Вы выбрали ячейку C5 и записали для нее какие-то манипуляции, то последующие воспроизведения макроса будут производить эти действия именно над этой ячейкой. Такое поведение не всегда может соответствовать имеющимся задачам.

Поэтому в приложение Excel предусмотрена специальная возможность записи макросов с относительными ссылками. Если перед запуском макрорекодера было включено данное свойство, то любые ссылки будут записываться как смещенные относительно той ячейки, которая была активна на может этого запуска. Если изначально была выделена ячейка A1, а затем выбрана ячейка C5, то в код макроса попадет такая запись:

ActiveCell.Offset(4, 2).Range("A1").Select

Она указывает приложению на необходимость выделить ячейку, смещенную на 4 строки и 2 столбца от активной на данный момент ячейки. Это значит, если при последующем выполнении макроса предварительно выделить ячейку G10, то смещенной на 4 строки и 2 столбца окажется ячейка I14.

Для активации описанного параметра перейдите на вкладку «Вид», найдите область «Макросы» и в раскрывающемся меню кликните по пункту «Относительные ссылки».

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.

У Вас недостаточно прав для комментирования.

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

Чтобы записать макрос, нужно включить режим записи. Это можно сделать на вкладке Вид (View) в разделе Макросы (Macros) или в меню Сервис (Tools), если у Вас Excel 2003. Ниже на картинках показано, как выглядят эти меню.

Далее откроется диалоговое окно Запись макроса (Record Macro), как показано на картинке ниже:

как сделать относительную ссылку в excel для макроса

Здесь, по желанию, можно ввести имя и описание для макроса. Рекомендуется давать макросу такое имя, чтобы, вернувшись к нему спустя некоторое время, можно было без труда понять, для чего этот макрос нужен. Так или иначе, если не ввести для макроса имя, то Excel автоматически назовёт его Макрос1, Макрос2 и так далее.

Здесь же можно назначить сочетание клавиш для запуска записанного макроса. Запускать макрос таким способом будет значительно проще. Однако будьте осторожны! Если случайно назначить для макроса одно из предустановленных клавиатурных сочетаний Excel (например, Ctrl+C), то в дальнейшем макрос может быть запущен случайно.

Когда макросу дано подходящее имя и (при желании) задано сочетание клавиш, нажмите ОК, чтобы запустить запись макроса. С этого момента каждое действие (ввод данных, выделение ячеек, изменение формата ячеек, пролистывание листа и так далее) будет записано в макрос и сохранено в виде кода VBA.

При включении режима записи макроса в строке состояния (внизу слева) появляется кнопка Стоп. В Excel 2003 эта кнопка находится на плавающей панели инструментов.

Нажмите Стоп, когда выполните все действия, которые должны быть записаны в макрос. Теперь код записанного макроса сохранён в модуле редактора Visual Basic.

Параметр «Относительные ссылки»

Если перед началом записи макроса включить параметр Относительные ссылки (Use Relative References), то все ссылки в записываемом макросе будут создаваться как относительные. Если же параметр выключен, то при записи макроса будут создаваться абсолютные ссылки (подробнее об этих двух типах ссылок можно узнать в статьях, посвящённых теме ссылок на ячейки в Excel).

Параметр Относительные ссылки (Use Relative References) находится в разделе Макросы (Macros) на вкладке Вид (View). В Excel 2003 этот параметр расположен на плавающей панели инструментов.

Просмотр кода VBA

Код VBA, записанный в макрос, размещается в модуле, который можно просмотреть в редакторе Visual Basic. Редактор можно запустить нажатием Alt+F11 (одновременное нажатие клавиш Alt и F11).

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

Записывая макрос, Excel всегда создаёт процедуру Sub (не Function). Если при создании макроса к нему было прикреплено сочетание клавиш, то именно с его помощью запустить макрос будет проще всего. Существует и другой способ запустить макрос:

  • Нажмите Alt+F8 (одновременно нажмите клавиши Alt и F8);
  • В появившемся списке макросов выберите тот, который нужно запустить;
  • Нажмите кнопку Выполнить (Run).

Ограничения

Инструмент Excel для записи макросов – это очень простой способ создавать код VBA, но подходит он только для создания самых простых макросов. Дело в том, что этот инструмент не умеет использовать многие возможности VBA, такие как:

  • Константы, переменные и массивы;
  • Выражения IF;
  • Циклы;
  • Обращения к встроенным функциям или внешним процедурам.

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

Автоматическое создание кода VBA в Excel отлично работает для простых макросов, но если нужно построить более сложный макрос, то придётся научиться писать код VBA самостоятельно. Тем не менее, запись макроса в Excel – это отличны инструмент, при помощи которого можно создавать первоначальный код, а в дальнейшем исправлять или вставлять его в более сложные макросы.

Урок подготовлен для Вас командой сайта office-guru.ru
Источник: /> Перевел: Антон Андронов

Правила перепечаткиЕще больше уроков по Microsoft Excel

Оцените качество статьи. Нам важно ваше мнение:

Разберемся как сделать все ссылки абсолютными, относительными или смешанными в диапазоне ячеек в Excel, а не только для одной конкретной ссылки в формуле.

Приветствую всех, дорогие читатели блога TutorExcel.Ru.

Как мы уже хорошо знаем всего в Excel выделяют 3 типа ссылок: относительные (А1), абсолютные ($А$1) и смешанные ($А1 и А$1).
Применение каждого из типов имеет свой смысл и определенные преимущества, поэтому зачастую бывает полезно в формулах заменить все относительные ссылки на абсолютные (или наоборот), к примеру, часто может пригодиться при копировании диапазона ячеек.

Поменять тип для конкретной ссылки в ячейке можно с помощью клавиши F4.
Для этого выделяем ссылку в формуле (либо на ячейку, либо на диапазон ячеек) и поочередно нажимаем F4, в результате ссылки будут меняться в порядке A1 -> $A$1 -> $A1 -> A$1. Затем останавливаемся на нужном шаге и задача смены типа решена.

Однако как это нередко случается в Excel, что удобно сделать 1 раз, не совсем удобно делать десятки, а то и сотни раз.
Так с помощью клавиши F4 мы сможем быстро изменить тип для одной ссылки, но никак не для большого диапазона ячеек с данными.

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

Как поменять ссылки в формулах на абсолютные?

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

Переходим в редактор VBA (для быстрого перехода нажимаем Alt + F11), создаем новый модуль (щелкаем правой кнопкой мыши в панели проектов и выбираем Insert -> Module) и добавляем туда код макроса:

Sub ChangeCellStyleInFormulas()

    Dim MyCell As Range

    On Error Resume Next ‘Обработка ошибки, если рассматриваемый диапазон ячеек не содержит формул

    For Each MyCell In Selection.SpecialCells(xlCellTypeFormulas) ‘Цикл для каждой ячейки диапазона содержащая формулу

        MyCell.Formula = Application.ConvertFormula(MyCell.Formula, xlA1, xlA1, xlAbsolute) ‘Меняем тип ссылки

    Next

End Sub

Попробуем проверить работу макроса на простой таблице с формулами:

как сделать относительную ссылку в excel для макроса
Выделяем диапазон ячеек с таблицей (в нашем случае это диапазон F6:J10) и запускаем макрос ChangeCellStyleInFormulas (в панели вкладок выбираем Разработчик -> Макросы (или нажимаем Alt + F8), далее находим нужный макрос и жмем Выполнить):

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

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

Как поменять ссылки в формулах на относительные?

За преобразование формулы в макросе отвечает функция ConvertFormula, в которой один из параметров задает тип ссылки:

  • xlAbsolute. Абсолютная ($А$1);
  • xlRelative. Относительная (А1);
  • xlAbsRowRelColumn. Смешанная. Абсолютная строка и относительный столбец (А$1);
  • xlRelRowAbsColumn. Смешанная. Относительная строка и абсолютный столбец ($А1).

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

Например, для той же таблицы применим макрос с параметром xlAbsRowRelColumn (абсолютная строка и относительный столбец, вид A$1):

как сделать относительную ссылку в excel для макроса
И для параметра xlRelRowAbsColumn (относительная строка и абсолютный столбец, вид $A1):

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

Способ преобразования без использования макросов

Если не хочется возиться с макросами, то преобразовать все ссылки в формулах в относительные также можно и без их применения.

Действительно, так как признаком абсолютной или смешанной ссылки является наличие в формуле знака $ (который используется для закрепления строки или столбца), то с помощью инструмента Найти и заменить можно избавиться от всех знаков $ в формулах.

Выделяем диапазон с данными, нажимаем Ctrl + H, в поле Найти указываем знак доллара, а поле Заменить на оставляем пустым, нажимаем Заменить все и получаем нужный результат:

как сделать относительную ссылку в excel для макроса

Замечания

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

Спасибо за внимание!
Если у вас есть мысли или вопросы по теме статьи — пишите в комментариях.

Удачи вам и до скорых встреч на страницах блога TutorExcel.Ru!

Макрокод может быть очень полезным для нас при решении некоторых сложных задач в Excel, обычно мы можем выполнить его в Microsoft Visual Basic для приложений окно, нажав Run или нажатие F5 ключ. Но пробовали ли вы когда-нибудь запускать макросы, щелкая относительные гиперссылки на листе?

Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA


стрелка синий правый пузырь Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA

Нам может быть интересно запустить макрос, щелкнув гиперссылку в Excel, следующий метод может помочь вам выполнить эту задачу шаг за шагом:

1. Создайте гиперссылки, которые вы хотите использовать для выполнения кодов макросов. Щелкните ячейку и создайте гиперссылку для ссылки на себя, см. Снимок экрана:

макрос запуска документа из гиперссылки 1

2. Повторите вышеуказанный шаг, чтобы создать другие гиперссылки, которые вы хотите использовать, как показано на следующем снимке экрана:

макрос запуска документа из гиперссылки 2

3. Затем щелкните правой кнопкой мыши вкладку листа, содержащую гиперссылки, которые вы хотите использовать, и выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:

Код VBA: запускать коды макросов из гиперссылок:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$B$6" Then
        Call Macro1
        End If
         If Target.Range.Address = "$B$8" Then
        Call Macro2
         End If
End Sub

макрос запуска документа из гиперссылки 3

Внимание: В приведенном выше коде B6 и B8 содержат ли ячейки гиперссылки, которые вы хотите использовать, и Macro1 и Macro2 являются кодовыми названиями макросов, измените их по своему усмотрению.

4. Затем сохраните и закройте окно кода, с этого момента, когда вы щелкаете гиперссылку, конкретный код макроса будет выполняться сразу.


Статьи по теме:

Как запустить макрос при изменении значения ячейки в Excel?

Как запустить макрос на основе значения ячейки в Excel?

Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?

Как запустить макрос автоматически перед печатью в Excel?

Как запустить макрос, когда лист выбран из книги?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Хитрости »

31 Январь 2013              17466 просмотров


Как сделать гиперссылку на процедуру?

В своих статьях я часто прикладываю примеры с кодами. Т.к. мой сайт ориентирован как на знающих программирование в Visual Basic for Application(VBA), так и на начинающих, я в примерах почти всегда на первом листе делаю кнопку, по нажатию которой можно сразу же перейти в редактор VBA на нужный код без каких-либо лишних телодвижений. Как-то меня уже просили разъяснить каким способом я это делаю. Вот сегодня на одном из форумов попросили в очередной раз, что и побудило меня сесть и написать эту статью. Итак, к сути.

На самом деле это не так уж и сложно. Для начала необходимо создать хоть какой-то код(макрос) внутри книги(предполагается, что это вы умеете уже. Если нет — статья в помощь). Предположим, что наш макрос расположен в модуле Module1 и называется он Макрос1. Теперь создадим кнопку для вызова этого макроса, если необходимо. А после этого создадим еще одну кнопку(я использую для этих целей автофигуры), по нажатию на которую мы и будем попадать сразу в тело нужного нам макроса.


Способ 1:
Жмем на созданной фигуре правой кнопкой мыши. Выбираем в появившемся меню Гиперссылка:
Добавить гиперссылку
Выбираем «Файлом, веб-страницей»(этот пункт открывается по умолчанию) и вписываем в поле Адрес:: #Module1.Макрос1
Создание гиперссылки
Вот и все. Наша ссылка готова.
Решетка(#) перед именем модуля указывает, что ссылка ведет на путь внутри документа. Она обязательна. После имени модуля(Module1) ставится точка, после которой указывается имя процедуры(Макрос1) или функции, на которую должна перейти гиперссылка. Никаких пробелов или иных символов быть не должно.

С прочими возможностями гиперссылок и методах из создания можно ознакомиться в статье: Что такое гиперссылка?


Способ 2:
Этот способ кажется мне более «замороченным» и не эстетичным. Я его практически не использую. Создаем еще одну процедуру(можно в отдельном модуле), в которой и прописываем переход в нужный модуль и в нужную процедуру:

Sub GoTo_Sub()
    Application.Goto "Module1.Макрос1"
End Sub

А созданной кнопке назначаем выполнение именно этого макросаGoTo_Sub. Главный недостаток этого метода в том, что придется для каждой процедуры либо создавать новую процедуру с переходом, либо действовать через всевозможные конструкции типа If...Then, Select Case, что не очень удобно. Но данный метод может быть использован и в других целях. Например, для перехода в конкретную процедуру при возникновении ошибки в другой процедуре.

Также см.:
Что такое гиперссылка?
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?
Как создать кнопку для вызова макроса на листе?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Кнопка в Excel как ссылка на ячейку, какой-либо инструмент, созданный макрос значительно упрощает работу в программе. Чаще всего это графический объект с назначенным макросом или гиперссылкой. Рассмотрим, как сделать такую кнопку.

Как сделать кнопку на листе Excel

Суть работы: создать графический объект и назначить для него макрос или гиперссылку. Рассмотрим подробнее.

Способы создания графического объекта:

  1. Кнопка – элемент ActiveX. Переходим на вкладку «Разработчик». Нажимаем кнопку «Вставить». Открывается меню с набором элементов для вставки. Выбираем первый элемент ActiveX – «кнопку» (в виде серого кирпичика). Теперь рисуем курсором кнопку необходимого размера.
  2. Кнопка 1.

  3. Кнопка – элемент управления формы. Снова переходим на вкладку «Разработчик». Открываем меню инструмента «Вставить». Теперь выбираем элемент «кнопка» из первой группы (такой же серый кирпичик). Рисуем кнопку. Сразу открывается окно для назначения макроса: можно сделать сразу, а можно попозже.
  4. Кнопка 2.

  5. Кнопка – автофигура. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем подходящую фигуру. Рисуем. По готовой фигуре можно щелкнуть правой кнопкой мыши и изменить оформление.
  6. Кнопка 3.

  7. Кнопка – рисунок. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем инструмент «Рисунок». Для выбора будут предложены варианты, которые имеются на компьютере.

Кнопка 4.

Графический объект создан. Теперь нужно сделать его «рабочим».



Как в Excel сделать кнопку с макросом

К примеру, написали макрос для выполнения определенной задачи. Чтобы запускать его, нужно каждый раз заходить в меню «Разработчик». Что неудобно. Гораздо проще создать «рабочую» кнопку.

Если мы использовали элемент ActiveX, то:

Макрос 1.

Для других графических объектов макрос назначается так же. Процедура еще проще. Нужно щелкнуть правой кнопкой мыши по нарисованной кнопке или картинке и выбрать инструмент «Назначить макрос».

Назначить макрос.

Другие варианты использования кнопок

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

Нарисуем графический объект и выделим его. На вкладке «Вставка» найдем кнопку «Гиперссылка».

Гиперссылка.

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

Вставка гиперссылки.

Достаточно выбрать необходимый вариант и прописать к нему путь. Этот способ не требует написания макросов и предоставляет пользователю широкие возможности.

Подобные задачи можно выполнять и с помощью макросов. Например, чтобы при нажатии, пользователь попадал в определенную ячейку (М6), прописываем следующий код:

Sub Макрос 1()
Range(«M6»).Select
End Sub

Точно так же можно назначить макрос диаграмме, объектам WordArt, SmartAtr.

Как сделать кнопку сортировки в Excel для таблиц

Для показательного примера создайте тестовую таблицу как на рисунке:

Какого товара больше продано по месяцам.

  1. Вместо заголовков колонки таблицы добавим автофигуры, которые будут служить кнопками для сортировки по столбцам таблицы.
  2. Авто-фигуры как заголовки.

  3. В режиме Visual Basic — ALT+F11 в папке Modules вставляем новый модуль Module1. Для этого делаем по папке правый щелчок мышкой и выбираем: Insert-Module.
  4. Module1.

  5. Делаем двойной щелчок по Module1 и вводим в него следующий код:

  6. Sub Макрос1()
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«A2:A6«), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(«Лист1»).Sort
    .SetRange Range(«A2:D6»)
    .Apply
    End With
    End Sub
    ‘————————————————
    Sub Макрос2()
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«B2:B6«), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(«Лист1»).Sort
    .SetRange Range(«A2:D6»)
    .Apply
    End With
    End Sub
    ‘————————————————
    Sub Макрос3(
    )
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«C2:C6«), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(«Лист1»).Sort
    .SetRange Range(«A2:D6»)
    .Apply
    End With
    End Sub
    ‘————————————————
    Sub Макрос4()
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«D2:D6«), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(«Лист1»).Sort
    .SetRange Range(«A2:D6»)
    .Apply
    End With
    End Sub

    Примечание. Красным текстом отмечены отличающиеся параметры для каждого столбца.

  7. Назначаем каждой автофигуре свой макрос: для «Наименование» – Макрос1, а для «Май» – Макрос2 и т.д.

Все теперь достаточно только кликнуть по заголовку и таблица отсортирует данные относительно определенного столбца. Для удобства столбец «Наименование» Макрос1 сортирует по возрастанию благодаря параметру Order:=xlAscending. Во всех остальных столбцах присвоены макросы (2,3,4) с параметром Order:=xlDescending, который задает тип сортировки по убыванию. Чтобы видно было, в каком месяце было больше продано товара.

Скачать пример кнопки сортировки

Примечание. Такие простые макросы можно создать в автоматическом режиме без программирования или без написания VBA-кода, с помощью инструмента «Запись макроса».

36 / 33 / 1

Регистрация: 11.01.2013

Сообщений: 388

1

Ссылка на макрос

15.04.2014, 18:31. Показов 2364. Ответов 7


Студворк — интернет-сервис помощи студентам

Доброго времени суток!
Подскажите пожалуйста:
Сохранил часто используемый макрос как надстройку Excel, но макрос не виден в списке макросов. Для его запуска нужно открывать VBA-редактор…. получается долго и неудобно. Подскажите как добавить ссылку на макрос из этой в документ или ещё лучше как кнопочку.
Сама надстройка в приложении. Для корректной работы замените расширение на xlam.

С уважением, SysUnit.



0



toiai

3217 / 966 / 223

Регистрация: 29.05.2010

Сообщений: 2,085

15.04.2014, 18:42

2

Если файл-надстройка открыт, то кнопке можно назначить макрос таким образом:

Visual Basic
1
Application.Run "Òåñò(Add-In).xlam!CopySelectedRangeToNewSheet"



1



Sasha_Smirnov

5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

15.04.2014, 18:49

3

Регулярно используемый код можно назвать

Visual Basic
1
Sub workbook_open ()

и поместить в модуль Эта книга.

Хотя уже не надо:

Цитата
Сообщение от toiai
Посмотреть сообщение

Если файл-надстройка открыт…

Цитата
Сообщение от SysUnit
Посмотреть сообщение

Для корректной работы замените расширение на xlam.

А *.xls не могли бы пристегнуть? — а то я так не вижу.



1



36 / 33 / 1

Регистрация: 11.01.2013

Сообщений: 388

15.04.2014, 21:24

 [ТС]

4

toiai,
Спасибо за ответ! Но не очень понятно: файл-надстройка подключен (Файл-Параметры-Надстройки стоит галочка).

Цитата
Сообщение от toiai
Посмотреть сообщение

Если файл-надстройка открыт

одновременно его нужно самому открывать?

Sasha_Smirnov,
Спасибо за ответ! Не очень понял как это реализовать… Основная задача — видеть макрос во всех документах.
xlsx — расширение для возможности загрузить на форум, а в файле, чтобы превратить его в надстройку нужно заменить расширение xlsx на xlam. В 2013 офисе, к сожалению, нет возможности экспорта в .xla

С уважением.



0



1588 / 661 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

15.04.2014, 22:42

5

Лучший ответ Сообщение было отмечено SysUnit как решение

Решение

Только для 2007+ через XML разметку (см.вложение — вкладка «копирование»)
Для всех версий — панель инструментов, для 2007+ будет отображаться во вкладке «Надстройки»

В 2013 офисе, к сожалению, нет возможности экспорта в .xla

неправда:

Миниатюры

Ссылка на макрос
 



1



36 / 33 / 1

Регистрация: 11.01.2013

Сообщений: 388

15.04.2014, 22:51

 [ТС]

6

Sasha_Smirnov,
Прошу прощения — пропустил данную опцию. Дополнение для Office 2003 в приложении (xls нужно удалить).



0



36 / 33 / 1

Регистрация: 11.01.2013

Сообщений: 388

15.04.2014, 22:58

 [ТС]

7

Step_UA,
спасибо Вам огромное! Фантастика! Как вы это сделали? Как добавить кнопочку на новую вкладку «Копирование» для ещё одного макроса (если возникнет такая необходимость). Расскажите, пожалуйста.

С уважением.



0



1588 / 661 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

15.04.2014, 23:27

8

Лучший ответ Сообщение было отмечено SysUnit как решение

Решение

Правка ленты:
— вручную http://msdn.microsoft.com/ru-r… e.15).aspx
— используя специализированные программы
… использую бесплатную программу Новикова Максима Ribbon XML Editor



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

15.04.2014, 23:27

8

Понравилась статья? Поделить с друзьями:
  • Как в excel миф столбец
  • Как в excel копировать часть ячейки
  • Как в excel копировать функцию на весь столбец
  • Как в excel копировать формулы со сдвигом ссылки
  • Как в excel копировать формулы для всех ячеек