Выполнение расчетов данных в одном столбце и перемещение результата в другой в Excel.

Я впервые использую 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 

person user1457166    schedule 14.06.2012    source источник


Ответы (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
person Scott Holtzman    schedule 14.06.2012
comment
Привет, эти коды отлично работают, я сделал несколько настроек, и это именно то, что мне нужно. Теперь я пытаюсь понять, как выполнять некоторые операции с этими столбцами данных. Например, у меня есть различные операции в случайном порядке (Op 100, Op 200, Op 300, 100, 300 и т. д.) для столбца A, а в столбце B есть соответствующие данные времени для этих операций, и я пытаюсь найти разница значений времени между операциями (например, время Op 200 - Op 200). По сути, мой вопрос заключается в том, как мне пройти через столбец A, выполняя операцию в столбце B в соответствующих строках? - person user1457166; 15.06.2012
comment
Поскольку вы новичок в StackOverflow, вы можете не до конца понимать, как это лучше всего работает — для наибольшей выгоды для всех, кто его использует. Поскольку на ваш первоначальный вопрос был дан удовлетворительный ответ, пожалуйста, отметьте его как таковой. Это помогает пользователям, которые ищут в будущем, быть уверенными в ответе. По поводу вашего вопроса в комментарии выше. Пожалуйста, напишите еще один вопрос. Если вы хотите сообщить мне, что сделали это, я буду рад ответить на этот вопрос, когда он будет опубликован. Это также помогает сохранять конкретику и простоту, чтобы в будущем пользователи могли находить ответы на определенные вопросы. - person Scott Holtzman; 15.06.2012