ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何对单行或单列单元格与一组数组之间相互赋值?

如何对单行或单列单元格与一组数组之间相互赋值?

作者:绿色风 分类: 时间:2022-08-17 浏览:75
楼主
kevinchengcw
Q: 如何对单行或单列单元格与一组数组之间相互赋值?
A: 假设数据区域为从A1开始的十个单元格,则:
单行单元格赋值给数组可以用如下代码:
  1. Arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose([a1:j1]))
单列单元格赋值给数组可以用如下代码:
  1. Arr = WorksheetFunction.Transpose([a1:a10])
数组赋值给单行单元格可以用如下代码:
  1. [b2].Resize(1, UBound(Arr)) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Arr))
数组赋值给单列单元格可以用如下代码:
  1. [b2].Resize(UBound(Arr), 1) = WorksheetFunction.Transpose(Arr)
下面我们来分析:
我们可以这样假想,数组是横着的,类似单元格的一行这样,那么竖着的单元格想赋值给横着的单元格要用transpose转一下,但是数组与单元格还不同,所以横着的单元格想赋值给数组要先转竖再转横,虽然麻烦,但却是有效的方法;
数组赋值给单元格也是同样的道理的反向操作。

以上方法仅对单行或单列单元格及一组数组有效。

附示例文件。
示例文件代码如下:
  1. Sub tt()
  2. Dim Arr
  3. Arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose([a1:j1]))
  4. MsgBox Join(Arr, ",")
  5. [b2].Resize(UBound(Arr), 1) = WorksheetFunction.Transpose(Arr)
  6. Erase Arr
  7. Arr = WorksheetFunction.Transpose([a1:a10])
  8. MsgBox Join(Arr, ",")
  9. [b2].Resize(1, UBound(Arr)) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Arr))
  10. End Sub

单行或单列单元格与数组相互赋值.rar
2楼
亡者天下
过来学习一下

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap