【发布时间】:2019-01-12 12:54:33
【问题描述】:
我有一个包含两列的表。一个 (C1) 填充有两位小数格式的数字,例如 2584.12。另一列 (C2) 还包含不时写入的数字,格式不同。
在第二列范围内的工作表更改事件中,代码适用于 C2,与 C1 中应用的格式相同(编辑:格式不同但不同)。
为了引用 C1 中使用的格式,我使用的是包含一整列的数组:
Set mytable = worksheet.ListObjects("My_Table")
colarray = Application.Transpose(mytable.ListColumns("C1").DataBodyRange)
,但 "mytable.ListColumns("C1").DataBodyRange" 将数字读取为值而不是文本。
我的问题发生在,在 C1 中,参考数字小数为零,如“2584.00”,它在数组中存储为整数值,如“2584”,甚至表号也存储为带有两个零小数的文本作为“2584.00” "
我想知道是否有办法使用这种将表格列转置为数组的方法,以便将数字保留为文本,以避免小数点为零的问题。
我在想我必须在 DataBodyRange 上使用一些 .Text 属性,但我无法获得有效的结果,因此下一个无效(“无效的参数数量”):
colarray = Application.Transpose(mytable.ListColumns("C1").DataBodyRange.Text)
.Text 属性可以很好地处理表格中的单个单元格,例如:
debug.print mytable.ListColumns("C1").DataBodyRange.rows(1).Text
结果“2584.00”与 colarray(1) 中的“2584”相对。
当然,我可以为我的目的找到另一种方法,但为了速度优势,我会坚持使用整列的转置方法。
【问题讨论】:
-
您能否澄清问题的内容,以便正确的人回答。可能是关于 Excel 和 VBA(猜测)?
-
哦!谢谢布赖恩!这是关于 Excel VBA 的。我添加了 excel vba 标签。
标签: excel vba text transpose listobject