我正在创建一个简单的Excel文件,该文件将在表中显示SQL查询的结果。唯一的问题是我希望水平显示列而不是垂直显示I.E。:
Column name | val | val | val |
Column name | val | val | val |
Column name | val | val | val |
我已经研究了选项,我发现最常见的是使用编辑下的Transpose选项,但这不是我的选项,因为数据不会自动重置。我似乎无法在格式配置或创建查询期间找到该选项。我在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=?))
我会帮助您提供任何帮助。感觉就像在我面前有一个配置选项,我没有看到。
答案 0 :(得分:0)
如果您对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 Sub