Excel VBA union 从列中删除数据
Excel VBA union deletes data from column
我正在做的事情非常简单——选择一个列的并集,其中包含存储为文本的数字并转换它们。每次运行时,所有偶数联合编号的数据列都会被清除。
Union(Columns(19), Columns(22), Columns(25), Columns(28), Columns(31), Columns(34), Columns(37), Columns(40), Columns(43), Columns(46)).Select
With Selection
.Value = .Value
End With
虽然我多次查看了我的整个代码,但还是无法理解为什么这会表现得如此奇怪。非常感谢任何帮助。
尽量避免使用 Select
,并充分限定您的范围。这使事情更容易诊断并且更可靠...
Dim myRange As Range
With ThisWorkbook.Sheets("Sheet1")
Set myRange = Union(.Columns(19), .Columns(22), .Columns(25)) ' etc.
End With
现在,如果您要尝试将文本转换为数字,最好使用 NumberFormat
属性,如此处所述:What are .NumberFormat Options In Excel VBA?
遍历范围区域和数字格式:
Dim area As Range
For Each area In myRange.Areas
area.NumberFormat = 0 ' for numbers, could still use area.Value = area.Value
Next area
不连续范围的 Value
属性 仅 returns 该范围的第一个区域。然后,当您尝试将该值(在本例中为数组)分配回不连续的范围时,您会得到奇怪的结果。对于这种特殊情况,每隔一列将获得第一个区域中第一个单元格的值。
您应该遍历范围内的区域。
For each rArea in Selection.Areas
rarea.value2 = rarea.value2
Next rarea
我正在做的事情非常简单——选择一个列的并集,其中包含存储为文本的数字并转换它们。每次运行时,所有偶数联合编号的数据列都会被清除。
Union(Columns(19), Columns(22), Columns(25), Columns(28), Columns(31), Columns(34), Columns(37), Columns(40), Columns(43), Columns(46)).Select
With Selection
.Value = .Value
End With
虽然我多次查看了我的整个代码,但还是无法理解为什么这会表现得如此奇怪。非常感谢任何帮助。
尽量避免使用 Select
,并充分限定您的范围。这使事情更容易诊断并且更可靠...
Dim myRange As Range
With ThisWorkbook.Sheets("Sheet1")
Set myRange = Union(.Columns(19), .Columns(22), .Columns(25)) ' etc.
End With
现在,如果您要尝试将文本转换为数字,最好使用 NumberFormat
属性,如此处所述:What are .NumberFormat Options In Excel VBA?
遍历范围区域和数字格式:
Dim area As Range
For Each area In myRange.Areas
area.NumberFormat = 0 ' for numbers, could still use area.Value = area.Value
Next area
不连续范围的 Value
属性 仅 returns 该范围的第一个区域。然后,当您尝试将该值(在本例中为数组)分配回不连续的范围时,您会得到奇怪的结果。对于这种特殊情况,每隔一列将获得第一个区域中第一个单元格的值。
您应该遍历范围内的区域。
For each rArea in Selection.Areas
rarea.value2 = rarea.value2
Next rarea