网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月03日漏签0天
excel吧 关注:281,444贴子:1,551,337
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 0回复贴,共1页
<<返回excel吧
>0< 加载中...

矩阵转换VBA代码,喜欢的小伙伴拿去用

  • 只看楼主
  • 收藏

  • 回复
  • 秦時明月漢時圓
  • 以E待劳
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实际请根据需求适当修改代码,这里源数据按列从到右存放。如果源数据是按行从上往下存放,请先转置。
VBA代码如下:
Sub New_Trans()
Call MyTrans(0) '0按列匹配数据,1按行匹配数据
End Sub
Sub MyTrans(ByVal MatchOrder As Integer)
Dim rng As Range, arr, temp, myarr
Dim i&, j&, m&, n&, r&, c&
Sheet1.Activate '默认原始数据在shee1工作表
Set rng = Application.InputBox(prompt:="请选择源数据区域", _
Title:="数据转换", Type:=8)
r = rng.Rows.Count
c = rng.Columns.Count
arr = rng
ReDim temp(1 To r * c)
For j = 1 To c
For i = 1 To r
temp((j - 1) * r + i) = arr(i, j)
Next
Next
m = Application.InputBox(prompt:="请输入转换后的行数", _
Title:="数据转换", Type:=1)
n = Application.InputBox(prompt:="请输入转换后的列数", _
Title:="数据转换", Type:=1)
If UBound(temp) <= m * n Then
ReDim myarr(1 To m, 1 To n)
If MatchOrder = 0 Then
For j = 1 To n
For i = 1 To m
If UBound(temp) >= (j - 1) * m + i Then
myarr(i, j) = temp((j - 1) * m + i)
End If
Next
Next
ElseIf MatchOrder = 1 Then
For i = 1 To m
For j = 1 To n
If UBound(temp) >= (i - 1) * n + j Then
myarr(i, j) = temp((i - 1) * n + j)
End If
Next
Next
End If
Sheet2.Activate '默认转换后的数据放入sheet2工作表,如果转换后的数据还在sheet1, 请删掉这句
[a1].CurrentRegion.ClearContents '默认清空A1单元格周围所有数据
[a1].Resize(m, n) = myarr '默认从A1开始放数据
Else
MsgBox prompt:="数据输入错误", Title:="数据转换"
Exit Sub
End If
End Sub


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回excel吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示