Страницы: 1
RSS
Передача параметра в формулу с использованием VBA, найти параметр на одном листе и передать его с помощью макроса в формулу
 
Добрый день, в написании сложных макросов не силен, но имеется необходимость в написании следующего макроса:
1. на листе 1 имеется рабочая таблица, в которой периодически происходит изменение содержимого (колонки добавляются - удаляются).
2. на листе 2 имеется таблица, в которую при помощи макроса необходимо сгенерировать формулу с данными из колонок с листа 1.

Моё видение:
Код
Sub TEST()
ColumnsQuantity = Лист1.UsedRange.Columns.Count             ' считаем кол-во столбцов на листе 1
    
For j = 1 To ColumnsQuantity
    If Лист1.Cells(1, j).Text = "Марка" Then
    Лист2.Range("A2").Select
    ActiveCell.FormulaR1C1 = "=лист1!???"   'Вот тут не знаю как передать параметр на нужную ячейку второй строки j-того столбца.
    End If
Next
    
End Sub
Прошу помочь.
Изменено: Иван Пупкин - 08.01.2016 23:23:47
 
Иван Пупкин, здравия. Напишите формулы во второй таблице вручную, чтобы понимать что именно там должно быть.
Хотя, мне кажется, что если Вы опишите, что должно в итоге получиться, то может и без формул обойдётся, раз макрос используете, то пусть он и считает что нужно и записывает куда надо.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, добрый день! Вписал формулы на втором листе.
Нет, без формул не получается, т.к. данные должны быть динамическими, и при добавлении новых строк (не обязательно в конец) автоматически обновляться, с формулами этого можно добиться путем протягивания формул, а с макросом - только перезапуском макроса (это крайний вариант, хочется попробовать через формулы решить задачку).
 
Цитата
Иван Пупкин написал:
а с макросом - только перезапуском макроса
Но  Вы же свой макрос TEST будете запускать? Вот пусть он всё и считает.
 
Так запущу я его один раз, а потом формулу растяну. А так мне каждый раз при переходе на лист2 надо макрос запускать.

Вопрос сейчас в том, можно ли макросом в формулу подставить нужную колонку или нет?
Если нет, то да, другого варианта, как постоянно перезапускать макрос - нет.
 
Код
Sub TEST()
    ColumnsQuantity = Лист2.UsedRange.Columns.Count ' считаем кол-во столбцов на листе 2
    For j = 1 To ColumnsQuantity
        col = Лист1.Rows(1).Find(Лист2.Cells(1, j)).Column
        dl = col - j
        frm = "=Лист1!RC[" & dl & "]"
        Лист2.Cells(2, j).Resize(10) = frm
    Next
End Sub
 
RAN, супер! Большое СПАСИБО!
 
Если формулы не очень тяжелые, то можно так без макросов
KL
 
KL, спасибо за совет, но боюсь что так не получится, т.к. на листе 1 очень часто данные будут обновляться с полным удалением всех данных и формула постоянно будет становиться "#ССЫЛКА".
 
Анатолий, в таком случае используйте формулу ИНДЕКС().

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Анатолий написал:
с полным удалением всех данных и формула постоянно будет становиться "#ССЫЛКА".
Да ну? А попробовать? ;)
Удаляйте хоть все столбцы, а потом там же вставляйте таблицу или столбцы.
А вот ИНДЕКС была бы уязвима, т.к. требует реального диапазона.
Изменено: KL - 09.01.2016 00:25:24
KL
 
Цитата
Иван Пупкин написал: а с макросом - только перезапуском макроса
Есть событийные макросы, например, на активацию листа, на изменение содержимого исходных ячеек. Пока я не вижу особого смысла в динамической таблице без объяснения что из чего Вы хотите получить.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
KL написал: А попробовать?
Попробовал, и действительно, я ошибался.
Но эта формула жестко привязана к столбцам, а у меня как раз столбцы могут изменяться. так что данная формула мне не подходит. Но всё равно большое спасибо, я даже не обдумывал такой вариант.
 
Привязано потому, что у вас в примере столбцы были не по порядку на листе 2. Замените номер столбца в формуле выражением СТОЛБЕЦ() и будет вам счастье ;)
Изменено: KL - 09.01.2016 02:30:03
KL
 
Копка цитирования не для ответа [МОДЕРАТОР]

А как мне указать именно номер столбца "дата производства", т.к. просто заменив у меня в 3-я столбце выражением СТОЛБЕЦ(), у меня появилась колонка "Владелец".
Действительно интересный вариант, но пока не могу понять как им воспользоваться.
 
См. вложение
KL
 
KL, спасибо. Теперь разобрался.
Страницы: 1
Читают тему
Наверх