如何在VBA中用循环转置9×9表格,不使用内置Transpose函数?
纯循环实现9x9表格转置(无需VBA内置Transpose函数)
当然可以!完全不用依赖VBA内置的Transpose函数,纯靠嵌套循环就能轻松完成9行9列表格的转置,而且你已经写出了可运行的代码,这已经迈过了最关键的一步👏
核心思路
转置的本质就是把原表格中第i行第j列的内容,放到新位置的第j行第i列。但要注意:如果直接在同一张工作表上覆盖写入,一定要先把原数据存到一个临时数组里——不然转置过程中前面被覆盖的数据会干扰后续的取值,导致结果出错。
示例代码
这里给你一份清晰的纯循环实现代码,逻辑和你现有的版本类似,但做了更规范的临时数组处理:
Sub Transpose9x9Manual() ' 定义临时数组存储原9x9数据 Dim tempData(1 To 9, 1 To 9) As Variant Dim rowIdx As Integer, colIdx As Integer ' 第一步:读取原数据到临时数组(假设原数据从A1单元格开始) For rowIdx = 1 To 9 For colIdx = 1 To 9 tempData(rowIdx, colIdx) = Cells(rowIdx, colIdx).Value Next colIdx Next rowIdx ' 第二步:通过循环转置写回工作表 For rowIdx = 1 To 9 For colIdx = 1 To 9 Cells(colIdx, rowIdx).Value = tempData(rowIdx, colIdx) Next colIdx Next rowIdx End Sub
小提示
如果你的原数据不是从A1开始(比如在C3:K11区域),只需要调整单元格的引用即可:
- 读取数据时改成
tempData(rowIdx, colIdx) = Range("C3").Offset(rowIdx - 1, colIdx - 1).Value - 写回时根据你的目标位置调整
Cells(colIdx, rowIdx)为对应的起始单元格偏移即可。
内容的提问来源于stack exchange,提问作者USER7423
相关产品推荐
相关产品推荐

