2014-10-16 2 views
-2

У меня есть две колонки в листе первенствовать под названием numOne и numTwo следующим образом:Добавление двух столбцов в VBA

numOne numTwo 
1  2 
2  3 
3  6 
4  7 

Теперь я хочу написать VBA макросов (автоматизации), чтобы добавить эти столбцы и создать третий столбец numSum Как я могу это достичь? Вывод должен выглядеть следующим образом:

numOne numTwo numSum 
1  2  3 
2  3  5 
3  6  9 
4  7  11 

Заранее спасибо

+1

Привет. Обычно люди не просят здесь готового кода. Вы должны хотя бы попробовать что-то самостоятельно, а затем попросите решение своей конкретной проблемы *, если это произойдет. – Taosique

+0

ОК опубликует его здесь некоторое время. –

+3

Зачем вам нужен код? не можете ли вы просто сделать формулу «C2 = A2 + B2»? –

ответ

0

Предполагая, что ваши входы лежат в столбцах 1 и 2 вашей таблицы, начиная со 2-го ряда, вы можете достичь такой цели (даже если формула Excel будет гораздо более разумной):

Sub numSum() 
Dim count As Integer: count = 0 
Cells(1,3) = "numSum" 
Do While Cells(1,count + 2) <> "" 
    Cells(3,count+2) = Cells(1,count+2) + Cells(2,count+2) 
    count = count + 1 
Loop 
End Sub 

... который является «чистым» подходом к решению VBA, т. Е. В вашей таблице будут только жестко закодированные данные без добавления какой-либо формулы в ячейки.

+0

Я пробовал один и тот же код, но вместо того, чтобы делать во время проверки условий для «" Я проверял NULL, который давал мне ошибку типа Mismatch –

+0

@AmanMathur, 'null' - это тип объекта, который в синтаксисе VBA имеет ключевое слово «Nothing» (вот почему «несоответствие типа»). Ваша петля смотрит на значения ячеек: ячейка является объектом, значение является свойством ячейки. В общем, соблюдайте это различие при написании своих кодов. Это не было большим делом, поскольку код не компилируется, но иногда такие же ошибки могут привести к коду, который компилируется, но имеет глубокую концептуальную ошибку, приводящую к неправильным результатам/поведению. Постскриптум рассмотрите вопрос о ответе, если он вам подходит;) –

+0

Другой трюк: если вы напишете 'Do While Cells <> 0', в вашем конкретном примере это сработает. Однако, как и вы, вы рискуете, что 0 будет юридически присутствовать в вашем наборе данных, и цикл остановится, когда он найдет это значение. Следовательно, всегда лучше использовать условие 'Do While Cells <>" "', поэтому вы знаете, что разрыв цикла будет происходить только в том случае, если ячейка полностью пуста. –

0

Как vba4all говорит, что вы могли бы легко сделать это с помощью формулы, но сделать это с помощью VBA вы можете попробовать:

Sub test() 
LastRow = ActiveSheet.UsedRange.Rows.Count 
Range("C1").Formula = "=A1+B1" 
Range("C1").AutoFill Destination:=Range("C1:C" & LastRow) 
End Sub 
Смежные вопросы