使用VBA对结果进行排序和分组

时间:2016-02-27 17:27:01

标签: excel vba

我对Excel VBA有些新意。我正在处理现有的Excel工作表,该工作表通过存储过程从SQL Server表中检索数据。它目前只显示电子表格中的数据。我希望能够按值(0或1)对其进行排序,并将结果打印为组,第一组0,然后组1,并重复组之间的标题。感谢

1 个答案:

答案 0 :(得分: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(上面的代码)是您发送到SQL Server的信息,用于告诉服务器您要检索哪种数据。换句话说,这就是Excel发送给服务器并获取数据的回报。有几种不同的方法可以实现这一目标:

  1. 第一种可能性是直接使用Excel中的Data标签,如下文所述:http://kildrummy.com/how-to-pulling-export-data-into-excel/注意,屏幕底部显示的窗口名为Connection Properties。您可以清楚地看到Command Type被设置为SQL而Command Text是SQL代码(就像我上面给出的示例)。
  2. 从SQL Server获取数据的第二个选项是VBA。以下Q& A是如何实现这一目标的示例:Accessing SQL Database in Excel-VBA再一次,您可以在VBA中注意VBA代码中的`strSQL'字符串,其中包含发送到SQL Server的SQL命令。 / LI>