对一列中的数据执行计算,并在Excel中将结果移动到另一列。

时间:2012-06-14 20:16:44

标签: excel vba excel-vba vectorization

这是我第一次使用VBA,所以我根本不熟悉excel VBA的语法(我以前学习过c ++和matlab)。

我正在尝试获取一列数据,进行一些简单的计算(例如乘以3),然后将其放入新列中。

现在,我正在尝试排序的数据中包含重复数据。例如,此列包含:

1  
2  
3  
4

2  
3  
6   
8    
9  
2  
3

重复数字,有时还会留空。现在我不太担心排序。我从一列中取出一堆数组时遇到麻烦,并在下一列中放入一组不同的数组。我该怎么做呢?下面的代码适用于字符串,我该如何调整?谢谢!

这是我的尝试:

Sub unique()
    Dim arr As New Collection, a
    Dim aFirstArray() As Variant
    Dim i As Long

    aFirstArray() = Range("E:E")
    ' On Error Resume Next
    For Each a In aFirstArray
        arr.Add a, Str(a)
        'I tried changing Str(a) to Integer(a), apparently it doesn't work like this in Excel
    Next

    For i = 1 To arr.Count
        Cells(i, 3) = arr(i)
    Next

End Sub 

1 个答案:

答案 0 :(得分:1)

这可能与您的思维过程不完全相符,但我认为其中的本质是使用一些不同的VBA工具。如果您有疑问或无法解决问题,请告诉我。

此代码忽略重复项和空白单元格。如果你想把它们放在你的清单中,那么应该很容易调整。

Sub unique()

Dim i As Integer
Dim dict As New Dictionary
Dim cel As Range
Dim rng As Range

Set rng = Range("A1:A12")

i = 1
For Each cel In rng
    If cel <> vbNullString Then
        If Not dict.Exists(cel.Value) Then
            dict.Add cel.Value, i
            i = i + 1
        End If
    End If
Next

For i = 1 To dict.Count - 1
    Cells(i, 3) = dict.Keys(i)
Next

End Sub