Нужна помощь. Найти значение на одном листе, вставить найденное в другой лист

Автор ivamartynov, 10 августа 2015, 10:40

0 Пользователи и 1 гость просматривают эту тему.

ivamartynov

Вот макросом ищу в таблице значения:

sht1 = ThisComponent.Sheets.GetByName("TEMP")
sht2 = ThisComponent.Sheets.GetByName("PLAT")
REG = sht.getCellByPosition(0,0).Value
For i = 1 To 5000
If sht2.getCellByPosition(0,i).Value = REG Then
PLAT = sht2.getCellByPosition(5,i).Value
DAT = sht2.getCellByPosition(6,i).Value
End If
Next

Подскажите как сделать, что бы при нахождении совпадения (REG) вставлять из этой строки значения PLAT и DAT на лист TEMP

rami

Я не совсем понял, что нужно? Собрать все (или не все) записи (строки), в которых в REG равен числу в ячейке А2 на втором листе?

Вообще это задача для фильтра — вы ему даёте критерий, а он возвращает все соответствия.

ivamartynov

В том то и дело, что нужен макрос.
Ввел номер REG на листе TEMP, нажал кнопку, макрос пробежался по таблице PLAT и если REG совпал с заданным в А2 остановился скопировал по этой строке данные из листа PLAT на лист TEMP (дату и сумму платежа), потом дальше побежал и так до конца таблицы PLAT.

rami

Цитата: ivamartynov от 10 августа 2015, 09:52В том то и дело, что нужен макрос.
А кто против макроса?  8-)
Цитата: ivamartynov от 10 августа 2015, 09:52Ввел номер REG на листе TEMP, нажал кнопку, макрос пробежался по таблице PLAT и если REG совпал с заданным в А2 остановился скопировал по этой строке данные из листа PLAT на лист TEMP (дату и сумму платежа), потом дальше побежал и так до конца таблицы PLAT.
Слишком много беготни.  ;D
В ячейке А2 есть выпадающий список.
Проверяйте:



rami

Цитата: ivamartynov от 10 августа 2015, 11:04а можно сделать сортировку по дате?
В смысле? Полученные данные сортировать или отобрать только нужную дату?


ivamartynov

и еще, можно ли привязать вывод найденного не к номеру листа, а к имени, например выводить результат на "Лист3"
oCellAddress.Sheet=1

rami

Чтобы перенести всё это в другой документ нужно:
1. скопировать макрос
2. сделатъ в нужных ячейках выпадающий список (в меню Данные>Проверка...>Разрешить: Диапазон ячеек) см. Проверка
3. щёлкнуть по ярлыку листа(того, в котором ячейка со списком) и в выпадающем меню выбрать События листа..., и назначить макрос событию см. Событие

rami

Цитата: ivamartynov от 10 августа 2015, 11:37и еще, можно ли привязать вывод найденного не к номеру листа, а к имени, например выводить результат на "Лист3"
oCellAddress.Sheet=1
Должен быть номер листа, но если нужно, можно получить номер листа по его имени. Это лишнее усложнение.

ivamartynov

ок, с номером листа можно не заморачиваться и так много сделали/объяснили. Спасибо!

rami

Цитата: ivamartynov от 10 августа 2015, 11:04а можно сделать сортировку по дате?
Если исходная таблица не "святая корова", то проще всего отсортировать данные в ней, тогда и результат будет отсортированный

ivamartynov

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

rami

Цитата: ivamartynov от 10 августа 2015, 12:53Не работает. Переделал так: нажимаю кнопку, ввожу номер он копируется в ячейку и... Тишина не заполняются данные.
Вы что-то делаете не так. Если вы перенесли "всё" в новый документ, то скорей всего не всё. В макросе есть три диапазона (они выделены красным), проверьте что они "соответствуют действительности". Во второй строке макроса адрес изменяемой ячейки должен быть точный. Если не получится, напишите мне адрес листа и ячейки.