首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在excel中将垂直数据转换为水平数据

在excel中将垂直数据转换为水平数据
EN

Stack Overflow用户
提问于 2012-10-25 17:47:35
回答 2查看 69.9K关注 0票数 0

在excel表格中,我有如下数据:

代码语言:javascript
运行
复制
Name        Age
-------    -------
XYZ        24
ABC        25
CDE        26
GHI        27

我希望这个数据转换为excel表如下所示。

代码语言:javascript
运行
复制
Name1     Age1    Name2     Age2    Name3     Age3    Name4     Age4
XYZ       24      ABC       25      CDE       26      GHI       27

这个是可能的吗?请帮帮忙。谢谢!

EN

Stack Overflow用户

发布于 2012-10-25 19:05:57

将此代码粘贴到vba编辑器(标准模块)中,并将代码添加到按钮中。

代码假设该表从范围"A1“开始。

第一行包含标题,其他行包含示例中的值。

我粘贴了第8行的输出。

如果有帮助,请告诉我。

代码语言:javascript
运行
复制
Option Explicit

Sub Name_Age()

Dim oRange                  As Excel.Range
Dim iRange_Cols             As Integer
Dim lRange_Rows             As Long
Dim lCnt                    As Long

Dim vArray                  As Variant
Dim vArray_Dest             As Variant

Dim lUbound_Rows            As Long
Dim lUBound_Cols            As Long


Set oRange = ThisWorkbook.Sheets(1).UsedRange
iRange_Cols = oRange.Columns.Count
lRange_Rows = oRange.Rows.Count - 1
ReDim vArray(1 To lRange_Rows, 0 To iRange_Cols)
ReDim vArray_Dest(1 To iRange_Cols, 1 To (lRange_Rows * iRange_Cols))
vArray = oRange

lCnt = 0
For lCnt = 1 To lRange_Rows
    vArray_Dest(1, (lCnt * 2) - 1) = CStr("Name" & lCnt)
    vArray_Dest(1, (lCnt * 2)) = CStr("Age" & lCnt)
    vArray_Dest(2, (lCnt * 2) - 1) = vArray(1 + lCnt, 1)
    vArray_Dest(2, (lCnt * 2)) = vArray(1 + lCnt, 2)
Next lCnt

lUbound_Rows = UBound(vArray_Dest, 1)
lUBound_Cols = UBound(vArray_Dest, 2)

Set oRange = Nothing
Set oRange = ThisWorkbook.Sheets(1).Range(Cells(8, 1), Cells(8 + lUbound_Rows - 1, lUBound_Cols))
oRange = vArray_Dest

End Sub
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13065896

复制
相关文章

相似问题

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