Страницы: 1
RSS
Вывод двумерного массива
 
добрый день. возник вопрос.  
есть база по продуктам.  
и есть меню. с помощью ВПР сделал вывод продуктов их массу, витамины, жиры, углеводы в лист Меню. Также допилил чтобы все данные продукта зависели от массы, то есть меняли свои значения в зависимости от массы.  
 
но потом в базу с продуктами добавились блюда. В блюдах все те же продукты, то есть идет:  
Название блюда, напротив в ячейке масса. под блюдом сразу же идут ингридиенты, масса, витамины, жиры, углеводы и т. д.  
 
как можно сделать чтобы при наборе в Меню листе названия блюда выводилась сразу вся таблица всего блюда?  
 
хочу заметить, что блюда состоят из разного количества блюд.  
 
может какой то макрос можно сделать? который будет добавлять в пустые ячейки нужные формулы? или что еще? какие есть советы?  
 
потом кстати все данные приходится суммировать, сперва по данным Завтрак, обед, ужин, потом Итог за весь день.  
можно в принципе вручную, но в будущем хочется оптимизировать.  
 
спасибо.
 
Без примера, что нужно по большей части понимаете только Вы.  
Пример в студию, как есть и что нужно
 
Нужно сначала структурировать таблицу. И можно обойтись без макросов.
 
выкладываю пример.  
 
там в продуктах, с черной обводкой как раз даны блюда, в такой таблицке сразу даны ингридиенты.  
файл сделан как тестовый, мне только формула нужна, остальное сам бы сделал.  
 
требуется чтобы при наборе в листе названия блюда, из продуктов бы все ячейки выводились в листе как они есть там сейчас.
 
Немного изменил структуру файла.  
Поленился заморачиваться с формулами. Написал небольшой макрос.  
Описание:  
- на листе "Menu" перечень блюд  
- на втором листе "Ingredients" уже идет разбивка на массу и пр. прелести  
- для запуска макроса соглашаемся на активизацию марко контента  
- кнопку макроса трудно не заметить)  
- чтобы все это заработало нужно выделить ячейку с названием блюда и нажать на кнопку макроса  
- за плюсиком скрываются формулы по расчету индекса и т.д., их нужно будет протянуть до конца списка блюд (разумеется, когда список ингредиентов на соотв.листе будет готов).
 
вот это уже интереснее...  
но все равно выводит одно блюдо только.  
а вот если в Menu ввести список блюд, выделить допустим все их и нажать расчитать, а он сбоку бы вывел все прелести из ингридиентов уже списком по порядку, относительно блюд?  
 
и еще вопрос, учитываются ли формулы, которые будут в ячейках ингридиентов? там у меня каждого продукта будет по 100 гр. записано, и соответственно все расчеты на 100 гр. а вот если продукт захочется взять не 100 гр, а 150 гр., то нужен пересчет, это я хочу заранее ввести в строку вывода массы.
 
По первому вопросу немного не ясно, что именно расчитываем?  
По второму вопросу - макрос расчитывает рамки массива ячеек, из этих ячеек берутся только значения, поэтому формулам ничто не помешает там быть.
 
не расчитываем (это я ошибся).  
 
вот мы пишем блюда, ну штук 10.  
Сейчас мы пишем их выделяем одно жмем кнопку и он выводит - все отлично.  
 
А можно ли написать их, выделить все блюда, нажать кнопку и вот он сбоку показал все блюда и их ингридиенты по порядку. По тому порядку, в котором мы записали блюда.  
т. е.  
вот мы ввели: Каша гречневая, Каша рисовая, Салат, Чай.  
 
а сбоку он там выдает таблицу:  
Каша гречневая и ингридиенты, Каша рисовая и ингридиенты, Салат и ингридиенты, Чай и ингридиенты
 
Сейчас переделаю файл.  
Для выделения нужных блюд окрашиваем ячейки с их названием желтым.  
5-10 мин.
 
Файл изменен.
 
да. спасибо. все работает.  
 
вот только вопрос.  
 
в столбе C цифры, я так понял это количество строк к ячейке и их можно выводить просто вручную, попробовал ручками, работает.  
в столбе В это уже номер строки откуда начинается блюдо.  
просто брал протягивал и в столбе С значения становились странными.  
0, -4.  
но это не беда. можно полностью доделать базу и числа вбить руками.
 
и еще. вот заметил.  
можно ли сделать чтобы форматирование сохранялось?  
блюда были отжирненные. ингридиенты нет.  
 
трудно ли самому дописать макрос?  
 
допустим было бы неплохо в конце вывода всего вывести через строку еще и итог? то есть сумму по каждому столбу.
 
дополнение к макросу.  
 
извините за назайливость.  
но вот еще заметил.  
 
вывод отличный. но при нажатии просто так все что было введено исчезает.  
 
пусть уж лучше данные остаются, те которые уже вывели.  
и пусть будет добавление новых, допустим мы добавили 3 блюда, хотим еще одно добавить, чтобы нам не выделять 4 блюда, пусть в конце будет добавление.  
 
и еще интересует реализация вот чего.  
 
меню расчитывается на Завтрак, обед и ужин, ну бывает ужин 2 и полдник. не важно.  
 
вот поэтому прошу добавление блюд независимо от выведенных.  
и также вывод блюд в нужной мне строке.    
то есть на завтрак мы затратили 10 строк. далее расчитан Итог (можно руками считать, можно также макросом). далее пропустили строку, написали Обед.  
и снова пошло добавление блюд.  
 
это в идеале.  
 
можно конечно просто копировать выведенные данные в новый лист и не волноваться, но было бы неплохо если был бы такой вывод.
 
Если перед каждым выводом данных не очищать диапазон ввода, то получится микс.  
Поясню:  
- в первый раз вывели на экран одно блюдо  
- потом четыре  
- потом снова одно  
- в итоге получился микс из ингредиентов  
Насчет итоговой суммы - есть автосумма, стоит ее найти.  
 
Можно сделать отдельным макросом очистку диапазона ввода.  
Вот его код:  
sub iClear()  
activesheet.Range("H3:N1000").ClearContents  
end sub  
Можно даже кнопку ему сделать.  
Для того, чтобы добавить этот макрос к уже существующему:  
- открываем редактор VBA  
- слева в окне Project Explorer наводим курсор на Modules  
- нажимаем пр.кн.мыши - Insert - Module  
- в этот добавленный модуль вставляем код макроса  
 
На самом деле в идеале приложить собственные усилия по изучению VBA и Excel.  
На этот ресурсе много различных примеров. Есть пример в самом файле. Изучаем, изменяем, прогрессируем. :)
Страницы: 1
Читают тему
Наверх