У меня есть пять постоянных таблиц (в примере две), которые консолидируются на отдельном листе. Использованная мной формула получается слишком громоздкой. Пытался присвоить имена столбцам в таблицах объединив их в массив, которому была бы возможность потом обратиться формуле. Но такой подход формуле не понравился.
Также использовал СУММЕСЛИМН, но формула все также больша.
Есть рабочая книга состоящая из листов. На каждом листе одна таблица (дата, статья, сумма). И итоговая таблица, где суммируются по статье все суммы из всех таблиц по месяцам.
Я хотел для удобства присвоить имена и потом собрать на итоговой таблице.
У меня есть пять постоянных таблиц (в примере две), которые консолидируются на отдельном листе. Использованная мной формула получается слишком громоздкой. Пытался присвоить имена столбцам в таблицах объединив их в массив, которому была бы возможность потом обратиться формуле. Но такой подход формуле не понравился.
Также использовал СУММЕСЛИМН, но формула все также больша.
{quote}{login=KIA}{date=14.12.2011 10:46}{thema=}{post}1) Лучше (быстрее) то, что предложил Hugo, а дополнил я. {/post}{/quote} Спасибо за разъяснения, возьму вариант Hugo с вашими дополнениями в работу. А есть какие нибудь функции, которые выводят время выполнения процедуры, чтобы себя проверить, что эффективней работает ?
{quote}{login=KIA}{date=14.12.2011 10:32}{thema=}{post}Автор, вот ещё один вариант, основываясь на коде от Hugo. Только с определением последней строки в столбце А {/post}{/quote}
With Worksheets("TableDeal") Dim iSource As Range, iCell As Range Set iSource = .Range("TableDeal[Бумага сокращенно]") With CreateObject("Scripting.Dictionary") For Each iCell In iSource iText$ = CStr(iCell.Value) If Not .Exists(iText$) Then .Add iText$, iText$ Next iItems = Application.Transpose(.Items) End With With Worksheets("Report").Range("A1").Resize(UBound(iItems)) .EntireColumn.Clear .Value = iItems End With End With End Sub
Может что лишние убрать? <EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
{quote}{login=}{date=14.12.2011 09:34}{thema=}{post}Для вашего задания выделять диапазон (.Select) совсем не нужно. Приложите небольшой пример и скажите, что нужно сделать{/post}{/quote}
Select - это для наглядности, правильно ли я задаю массив, чтобы потом эти данные подставить в сам код VBA для вытаскивания уникальных значений... Логика моя правильная?)
{quote}{login=}{date=14.12.2011 09:34}{thema=}{post}Для вашего задания выделять диапазон (.Select) совсем не нужно. Приложите небольшой пример и скажите, что нужно сделать{/post}{/quote}
Для чего все - это нужно (может есть способ проще). У меня есть таблица "Сделки", один из столбцов таблицы имеет название "Бумага сокращенно" с помощью кода VBA я буду выводить из этого столбца уникальный значения и мне нужно определить первую и последнию строку с данными, чтобы код работал только выделенном массиве.
Имеется столбец с данными начинающийся с А1 и заканчивающийся А10 (последние значение может быть разным (iRowLast), как можно выделить диапазон с данными с помощью кода VBA (Range("A1:A10").Select)?
как правильно выделить диапазон Range(A1:iRowLast).Select