Всем привет. Есть приличных размеров таблица, в которой занесены наименования товаров, дата покупки, количество и сумма. Необходимо ее видоизменить, чтоб даты были не в строках, в столбцах. Пример прилагаю.
Может кто подскажет как это реализовать, у самостоятельно ничего не вышло
Ivan.kh, кажется мне, что одним линком могу вам помочь - код от Hugo (пост4) - ну а с алгоритмом вы и сами справитесь... я никогда не сомневаюсь в вас (после того как вы мне однажды подсказали, что такое ln)... как вариант: наверно, извлечь уникальные можно в 1-й столбец/строку -> потом код от Hugo (как под спойлером адаптированный для вашей первой таблицы... ну и для 2-й по аналогии... мне на скорую руку такая мысль пришла от Hugo... писанины, наверно, будет по коду... но может у кого найдётся вариант короче (хотя этот тоже вроде ничего)
Скрытый текст
Код
Sub pt_on_dic()
'http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=62513&TITLE_SEO=62513-nuzhen-sovet-po-optimizatsii-tablitsy
'Hugo 28 Дек 2014 22:13:31
'Макрос заменяющий формулу суммпроизв если это целесообразно, нужен совет по оптимизации таблицы
Dim a(), i&, ii&
With CreateObject("scripting.dictionary"): .comparemode = 1
a = [a2:d20].Value
For i = 1 To UBound(a): .Item(a(i, 1) & "|" & a(i, 2)) = a(i, 3): Next
a = [h1:k11].Value
For i = 2 To UBound(a)
For ii = 2 To UBound(a, 2)
If Not IsEmpty(.Item(a(i, 1) & "|" & a(1, ii))) Then
a(i, ii) = .Item(a(i, 1) & "|" & a(1, ii))
Else: a(i, ii) = "0"
End If
Next
Next
[h1:k11].Value = a
End With
End Sub
p.s. что-то НЕ линкуются нормально ссылки (всё выкидывает на главную страницу форума) и уже не 1-й день... ... линк на код-оригинал - см в коде под спойлером (т к авторские права уважаю) - просто чуток откорректировала под вашу ситуацию (думаю, под последнюю строку и столбец вы выровняете сами - это уже красивости)... времени нет (sorry) - но вам Ivan.kh не ответить (хоть и в двух словах) не могу, если знаю хоть что-то... ещё раз спасибо, что когда-то вы проложили мне путь в мир excel... С уважением... Успехов
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
- пытались мы делать что-то подобное - (вместо вашего товара - наши страйки в боковую шапку, вместо ваших дат - наши контракты в верхнюю шапку) - но там свои усложнения (изначально брали с двух листов) - если урезать лишнее, то схема может подойти... только обратите внимание на структуру своих данных - все ли связки "товар-дата" уникальные? - т к ключ должен быть уникальным, иначе будет путаница (и возможно придётся плюсовать)... 3) из какого столбца брать - можно указывать через Inputbox. как писал The_Priest http://www.excel-vba.ru/chto-umeet-excel/rabota-s-dialogami/ - да и куда выкидывать - тоже можно через Inputbox указывать... p.s. форум уже, наверно, принципиально линковать не хочет, чтобы мы не расслаблялись ещё раз sorry. что я так кратко и по-русски, а не по vba (на нём я ещё пока медленно думаю)
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Kuzmich, чтоб получить данные именно такого вида как мне нужно необходимо будет построить 2 сводные. Обрабатывать данные сводных таблиц не удобно (по крайней мере мне ) по этому и хотелось получить что-то вроде сводной, только средствами VBA. Но все равно огромное Вам спасибо за уделенное время. Попытаюсь завтра что-то придумать пройдясь по ссылкам, которые любезно предоставила JeyCi
Здравствуйте Ivan.kh. Наверно данные всегда будут только за три дня, потому что 30 дней в такой таблице просматривать не удобно. Вариант сводной можно сделать из одной таблицы, чтобы не бегать по строке от первого столбца до 31. Это можно добиться фильтром, смотреть либо "кол-во" либо "Стоим. ед" (Лист1). Или на базе сводной сделать привычную вам таблицу (Лист2). Зная конечный результат, формулы можно сменить на более подходящие. В конечном итоге вам решать, как лучше и удобнее.
gling,спасибо за варианты. Данные будут за месяц (таблица не для просмотра мне нужна, а для расчетов). Табл. формулами я тоже делал, просто строк в исходной табл. очень много и формулы пересчитываются вечность. Юрий М, спасибо Вам огромное, идеально + зачетное название файла.