2016-02-27 2 views
0

Я несколько новичок в Excel VBA. Я работаю над существующим листом Excel, который извлекает данные из таблицы SQL Server с помощью хранимой процедуры. В настоящее время он просто отображает данные в электронной таблице. Я хочу иметь возможность сортировать его по значению (0 или 1) и печатать результаты как группы, первую группу 0, затем группу 1 и повторять заголовки между группами. СпасибоИспользование VBA для сортировки и группировки результатов

+0

Джим, дайте несколько примеров того, что вы пробовали до сих пор. Это побудит людей помогать больше. – pczeus

ответ

1

Попросите SQL сделать это за вас: либо измените хранимую процедуру на сервере, чтобы разрешить сортировку параметров. .

В качестве альтернативы, вы можете также сохранить результат хранимой процедуры в переменной таблицы и сортировать результат там (если вы не можете изменить хранимую процедуру Это будет выглядеть так:

declare @t table 
    (
    Column1 int, 
    Column2 bit, 
    Column3 nvarchar(100), 
    Column4 nvarchar(100), 
    Column5 nvarchar(100), 
    Column6 int, 
    Column7 nvarchar(100), 
    Column8 nvarchar(max), 
    Column9 bit 
    ) 

insert into @t 
     exec sys.sp_who 

select * 
from @t as t 
order by Column3 

в соответствии с поручением в своем комментарии, я развиваю немного на ответ, приведенный выше код T-SQL:. https://en.wikipedia.org/wiki/Transact-SQL Если вы хотели бы узнать SQL, то следующий веб-сайт может иметь большую помощь: http://www.w3schools.com/sql/default.asp

в основном, T -SQL (приведенный выше код) - это то, что вы d на SQL Server, чтобы сообщить серверу, какие данные вы хотели бы получить. Другими словами, это то, что Excel отправляет на сервер и получает данные взамен. Есть несколько различных способов сделать что:

  1. Первая возможность использовать вкладку Data в Excel непосредственно, как описано в следующей статье: http://kildrummy.com/how-to-pulling-export-data-into-excel/ Note, снимок экрана в нижней части с окном под названием Connection Properties. Вы можете четко видеть, что Command Type настроен на SQL, а Command Text - это код SQL (например, приведенный выше пример).
  2. Второй вариант получения данных с SQL Server - это VBA. Следующий пример Q & A - пример того, как это сделать: Accessing SQL Database in Excel-VBA Еще раз, вы можете отметить в VBA строку `strSQL 'в коде VBA, которая содержит команду SQL, отправляемую на SQL Server.
+0

На каком языке это? Мой VBA2008/6.5 этого не знает. –

+0

@PaulOgilvie Я расширил свой ответ, чтобы показать вам, как использовать/внедрять решение в своей книге Excel. Тем не менее, вы должны знать, что приведенный выше код является всего лишь примером. Я не знаю названия вашего сервера и данных, которые вы получаете с сервера (или хранимой процедуры). Следовательно, вам придется адаптировать приведенный выше код ** пример ** для соответствия фактическим данным, которые вы хотели бы получить. – Ralph

+0

Спасибо, я не уверен, как добавить код здесь, он не подходит в разделе комментариев (извините, полный нуб для этого форума. Данные извлекаются и отображаются в порядке, просто все в одном разделе. это полем и отображать его в двух группах, сначала по значению 0, затем по значению 1 с повторением заголовков (и добавленным заголовком описания поля – Jim

Смежные вопросы