Excel VBA "Группировка по-подобному" - PullRequest
1 голос
/ 10 февраля 2012

Я хочу получить данные с листа Excel в режиме, подобном SQL.Это означает, что у меня есть следующие столбцы: code, type, name, product_code, price, quantity.

Я хочу получить данные с этого листа, как если бы это была таблица базы данных, и я выполняю следующее:

select code, type, name, product_code, sum(price), sum(quantity) from table
group by code, type, name, product_code

Как я могу сделать это в VBA?

Ответы [ 3 ]

5 голосов
/ 10 февраля 2012

Упорядочите свои данные по code, type, name, product_code, затем напишите цикл, который повторяется по каждой строке на листе, агрегируя по ходу дела. Когда любое из этих четырех полей меняет значение, вы попадаете в новую группу, поэтому запишите свой текущий агрегат и начните заново с текущей строки.

Насколько мне известно, нет никакого способа написать SQL на листе Excel в VBA; ты просто пишешь цикл сам.


Лично я бы избегал VBA и использовал бы сводную таблицу.

1 голос
/ 11 февраля 2012

SQLite для Excel позволит вам сделать это в памяти.Я не совсем уверен, что именно LINQ предоставляет .NET толпе, но кажется, что вы можете эмулировать некоторые из них, используя SQLite.Я использовал его как раз для того, чтобы убедиться, что он работает, но до сих пор не дошел до создания класса утилит.

1 голос
/ 10 февраля 2012

Вы можете запросить рабочий лист, используя Access SQL, например, , используя ADO classic .Однако, поскольку типы данных определяются во время выполнения с использованием текущего состояния данных и разделов реестра (что может привести к значениям, приведенным к неправильному типу, и / или к значениям NULL, где значения не могут быть приведены), возможно, лучше импортироватьданные в таблицу в базе данных SQL, чтобы можно было указывать типы данных во время разработки, для которых SQL Server хорошо подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...