我正在创建一个简单的Excel文件,该文件将在表中显示SQL查询的结果。唯一的问题是,我希望水平显示列,而不是垂直显示,即:
Column name | val | val | val |
Column name | val | val | val |
Column name | val | val | val |我研究过选项,我发现最常见的是使用编辑下的转置选项,但这对我来说不是一个选项,因为数据不会自动重置。我似乎在format的配置下或在创建查询时找不到该选项。我在Micorsoft query中创建了查询本身,如下所示(稍微修剪了一下,使其更容易阅读):
SELECT SMPL_HDR.SMPL_HDR_KEY, SMPL_HDR.SMPL_DATE, SMPL_HDR.GROWER_NAME, SMPL_HDR.BREEDCROSS,
SMPL_HDR.FLOCK_AGE, SMPL_HDR.HOUSE_NUMBER, SMPL_HDR.TEST_TYPE, SMPL_HDR.LOCATION,
SMPL_HDR.USER_ID, SMPL_HDR.DATE_ENTERED, SMPL_DTL.SMPL_DTL_KEY, SMPL_DTL.PAWS_WGT,
SMPL_DTL.NECK_SKIN_WGT, SMPL_DTL.NECK_WGT, SMPL_DTL.HEART_WGT, SMPL_DTL.LIVER_WGT,
SMPL_DTL.PLD_GIZZARD_WGT, SMPL_DTL.FAT_WGT, SMPL_DTL.PRE_CHILL_WGT, SMPL_DTL.PST_CHILL_WGT,
FROM EYIS.dbo.SMPL_DTL SMPL_DTL, EYIS.dbo.SMPL_HDR SMPL_HDR
WHERE SMPL_DTL.SMPL_HDR_KEY = SMPL_HDR.SMPL_HDR_KEY AND ((SMPL_HDR.DATE_ENTERED=?))如果你能提供任何帮助,我将不胜感激。感觉就像在我面前有一个配置选项,我没有看到。
发布于 2014-10-03 00:21:53
如果您对VBA宏很熟悉,可以创建一个宏来转置结果,并在运行查询后调用该宏。(不确定您会捕获哪个事件。您没有提供有关如何填充工作表的详细信息。)我的VBA非常生疏,但我快速尝试了一下,下面是为我调换了一些测试数据……
Option Explicit
Public Sub TransposeCells()
Dim iRow As Integer
Dim iCol As Integer
Dim iMaxRow As Integer
Dim iMaxCol As Integer
Dim Sheet As Excel.Worksheet
Dim newSheet As Excel.Worksheet
Dim Rng As Excel.Range
Dim newRng As Excel.Range
iRow = 1
iCol = 1
Set Sheet = Application.ActiveSheet
' Find maximum boundaries
Set Rng = Sheet.Cells(iRow, iCol)
While (Rng.Text <> "")
iRow = iRow + 1
Set Rng = Sheet.Cells(iRow, iCol)
Wend
iMaxRow = iRow - 1
iRow = 1
Set Rng = Sheet.Cells(iRow, iCol)
While (Rng.Text <> "")
iCol = iCol + 1
Set Rng = Sheet.Cells(iRow, iCol)
Wend
iMaxCol = iCol - 1
iCol = 1
' Add new sheet for the results
Set newSheet = Worksheets.Add()
newSheet.Name = "Transposed"
' Transpose the results
For iRow = 1 To iMaxRow
For iCol = 1 To iMaxCol
Set Rng = Sheet.Cells(iRow, iCol)
Set newRng = newSheet.Cells(iCol, iRow)
newRng.Select
ActiveCell.Value = Rng.Text
Next iCol
Next iRow
End Subhttps://stackoverflow.com/questions/26163951
复制相似问题