首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >希望翻转在Excel中呈现的查询的轴

希望翻转在Excel中呈现的查询的轴
EN

Stack Overflow用户
提问于 2014-10-02 23:12:12
回答 1查看 48关注 0票数 1

我正在创建一个简单的Excel文件,该文件将在表中显示SQL查询的结果。唯一的问题是,我希望水平显示列,而不是垂直显示,即:

代码语言:javascript
复制
Column name | val | val | val |

Column name | val | val | val |

Column name | val | val | val |

我研究过选项,我发现最常见的是使用编辑下的转置选项,但这对我来说不是一个选项,因为数据不会自动重置。我似乎在format的配置下或在创建查询时找不到该选项。我在Micorsoft query中创建了查询本身,如下所示(稍微修剪了一下,使其更容易阅读):

代码语言:javascript
复制
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=?))

如果你能提供任何帮助,我将不胜感激。感觉就像在我面前有一个配置选项,我没有看到。

EN

回答 1

Stack Overflow用户

发布于 2014-10-03 00:21:53

如果您对VBA宏很熟悉,可以创建一个宏来转置结果,并在运行查询后调用该宏。(不确定您会捕获哪个事件。您没有提供有关如何填充工作表的详细信息。)我的VBA非常生疏,但我快速尝试了一下,下面是为我调换了一些测试数据……

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26163951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档