Страницы: 1
RSS
Автоматически заполняемая форма по условию
 
Добрый вечер уважаемые участники данного форума. Хочу реализовать заполнение печатной формы в зависимости от выбранных значений заранее подготовленными данными. Формулами не получится так как в рабочем варианте выбираемых значений будет много и данных для заполнения тоже много. Помогите пожалуйста - очень нужно.
 
Как то у Вас все хлопотно, а данные вообще кошмар - не для Excel сделаны. Посмотрите вариант хранения исходных данных и их выбора через сводную. Лишние строки и столбцы можно скрыть.
ПыСы для последующей обработки данных без сводной таблицу тоже желательно преобразовать.
Изменено: Igor67 - 17.06.2013 22:22:48 (Забыл файл)
 
Данные в таблицах не важны, они будут другими, я просто привел пример. Я думал, что нужно присвоить каждой таблице именованный диапазон, и таблице, которая на листе Form тоже присвоить именованный диапазон. А дальше при выборе комбинации из 2-х значений, соответствующий этой комбинации диапазон должен прировняться к диапазону конечной таблицы, т.е. пустая таблица должна заполнится данными другой таблицы. При этом размер всех таблиц будет одинаковый. Например:
Код
Если список1=А и список2=B то таблица form= таблице table3 

или
Код
Если список1=С и список2=J то таблица form= таблице table10

как то так
 
Код
Sub test(a$, b$, c As Range)
Set r = Sheets("tables").UsedRange
c.ClearContents
For i = 1 To r.Rows.Count
If r.Rows(i).MergeCells Then
aa = Split(r.Cells(i, 1))
If a = aa(1) And b = aa(3) Then
c = r.Cells(i + 1, 1).Resize(4, 4).Value
Exit For
End If
End If
Next
End Sub
Sub goTest()
Call test(Sheets("Данные").[b5], Sheets("Данные").[d9], Sheets("форма").[a4..d7])
End Sub
Спасибо
 
R Dmitry, код не работает почему-то
 
У меня работает :)))
необходимо добавить событие изменения нужных ячеек, и на их изменение повесить
вызов процедуры
Код
Call test(Sheets("Данные").[b5], Sheets("Данные").[d9], Sheets("форма").[a4..d7])
Спасибо
 
А можете рабочий файл выложить?
 
в модуль листа Данные

Код
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case [b5].Address: Call test(Sheets("Данные").[b5], Sheets("Данные").[d9], Sheets("форма").[a4..d7])
Case [d9].Address: Call test(Sheets("Данные").[b5], Sheets("Данные").[d9], Sheets("форма").[a4..d7])
End Select
End Sub
Спасибо
 
Спасибо, заработало.

А что нужно добавить в код если я надобавляю категорий и модификаций? А то со строки:

Код
If a = aa(1) And b = aa(3) Then


выдает ошибку
 
если структура останеться таже то ничего менять ненадо
Спасибо
 
А если добавить строки и столбцы? Например, 5 столбцов и 7 строк
 
а если прочитать пару книжек, почитать, разобраться самую малость...
-------------
ладно
Код
(4, 4)
====здесь размер вашей формы на выходе
Код
Sheets("форма").[a4..d7] 
===== здесь адрес вашей формы
-----------
после объединенной ячейки с вашими параметрами  сразу должна идти табличка с данными.
----------
Однако забудьте все это
и послушайте совет Игоря
Тынц
Спасибо
 
Это я уже понял и именно все так и делаю, но строки позволяет добавлять, т.е. 6, 4 и [a4..d9] - работает, а столбцы не добавляет, т.е. 6, 5 и [a4..e9] - таблица вообще не заполняется
 
Все разобрался - обединенная ячейка с параметрами должна быть шириной с таблицу  :)
 
Огромное Вам спасибо за помощь!!!

R Dmitry, ссылка из сообщения #12 отправляет на главную страницу сайта
 
что бы была не обязательно на всю строку, а хотя бы первые две
Код
r.cells(i,1).MergeCells 


не знаю почему ссылка бросает на главную, я имел ввиду сообщение Игоря67
Изменено: R Dmitry - 18.06.2013 23:59:22
Спасибо
 
Через сводную таблицу вряд ли получится так как данные для каждой выбранной модификации и категории сильно отличаюся друг от друга, но формат вывода и структура одинаковые. Для меня более приемлим Ваш вариант так как мне гораздо проще подготовить отдельные списки, которые будут вставляться автоматом, а в конечной таблице при необходимости подкорректировать данные в столбеце "количество". Сейчас у меня для каждой модификации отдельный файл, а для каждой категории отдельные листы в этих файлах, что согласитесь очень неудобно
 
Если правильно организовать хранение данных, то Вам даже стандартные формулы помогут.
Спасибо
 
Так и не могу понять, как находятся в заголовках таблиц выбранные в списках значения
Изменено: Andrey-ekt - 25.06.2013 00:02:49
 
А можно как-то упростить код, если нужно, чтобы вне зависимости от выбранного значения в списке, только одна таблица заполняла другую.
В принципе у меня в файле и так работает, но как-то сложно получается

Код
Sub test(a$, b$, c As Range)
Set r = Sheets("tables").UsedRange
c.ClearContents
For i = 1 To r.Rows.Count
If r.Rows(i).MergeCells Then

c = r.Cells(i + 1, 1).Resize(4, 4).Value
Exit For

End If
Next
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case [b5].Address: Call test(Sheets("Данные").[b5], Sheets("Данные").[b5], Sheets("форма").[a4..d7])
Case [a1].Address: Call test(Sheets("Данные").[b5], Sheets("Данные").[a1], Sheets("форма").[a4..d7])
End Select
End Sub
Изменено: Andrey-ekt - 01.07.2013 23:11:31
 
Код оформляем соответствующим тегом. Копируем при русской раскладке.
 
Подправил. В тестовом файле работает, а в рабочем не хочет. Поэтому и хочу упростить. Формулами не подойдет так как заполненная форма каждый раз будет сохраняться в новый файл. Пока сократил сам до такого:

Код
Sub test(a$, b As Range)
Set r = Sheets("tables").UsedRange
b.ClearContents
For i = 1 To r.Rows.Count
If r.Rows(i).MergeCells Then
b = r.Cells(i + 1, 1).Resize(4, 4).Value
Exit For
End If
Next
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case [b5].Address: Call test(Sheets("Данные").[b5], Sheets("форма").[a4..d7])
End Select
End Sub
Изменено: Andrey-ekt - 01.07.2013 23:57:42
 
Ребята, а можно форму заполнить без макрасов. Я их никак не освою. У меня Excel 2016 не нужно по каждому виду испытаний заполнить свою форму, т.е. выбрать из таблицы данных, чтобы автоматически заполнялась печатная форма

Помогите, пожалуйста. Очень буду благодарна
 
Уважаемые господа, помогите, пожалуйста. результат по этой формуле всегда дает 0. Не могу понять почему. Если суммирую по одному критерию, то дает правильный результат. Файл прикрепить не могу, т.к. это заводской файл.
=СУММЕСЛИМН('Лист1 (2)'!$G$4:$G$50;'Лист1 (2)'!$I$4:$I$50;"май";'Лист1 (2)'!$F$4:$F$50;"3/I";'Лист1 (2)'!$H$4:$H$50;"оцинкованная";'Лист1 (2)'!$F$4:$F$50;"3/II")
 
Вопрос не по теме
Страницы: 1
Наверх