2014-12-03 11 views
0

У меня есть лист excel, в котором есть два столбца number1 и number2. Для каждой итерации мне нужно взять число 1 и номер 2 из ячеек и добавить его, и мне нужно обновить результат добавления в третьем столбце говорят «Результат». Я пытаюсь достичь этого, используя метод OLE DB, но тот же результат обновляется во всех ячейках. Пожалуйста, найдите код ниже.Обновить результат для каждой записи

Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Sub TestMacro() 
Sheets("Sheet1").Range("C2:D20").ClearContents 
DBPath = ThisWorkbook.FullName 
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes;Option=3;" 
Set cn = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.RecordSet") 
select_query = "SELECT * FROM [Sheet1$]" 
cn.Open sconnect 
With rs 
    .ActiveConnection = cn 
    .Source = select_query 
    .CursorType = adOpenKeyset 
    .LockType = adLockOptimistic 
    .CursorLocation = adUseServer 
    .Open 
End With 
Do While Not rs.EOF 


    num1 = rs.Fields(0).Value 
    num2 = rs.Fields(1).Value 
    rs.Fields(2).Value = num1 + num2 
    rs.MoveNext 

Loop 
End Sub 
+0

Я не вижу причин использовать ADO для этого. Кроме того, ваши 2 'Set' утверждения не нужны, поскольку вы уже инициализировали переменные в ваших операторах' Dim'. –

ответ

0

Если вы просто ищете вариант рассчитайте, то: (? Предполагая, что вы делаете Col A + B = Col Col C) Range.Calculate является то, что вам нужно ... но гораздо более простой способ сделать это:

Dim LastRow As Long, CurRow As Long 

LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row 

For CurRow = 2 to LastRow '(assumes col header in row 1) 
    Cells(CurRow, 3).Formula = "=A" & CurRow & "+B" & CurRow 
Next CurRow 
+0

Ya расчет такой же. Но мне нужно его достичь, используя ADO RecordSet. Это требование @ Chrismas007 – user3196470

+0

Вы пытались очистить переменные 'num1' и' num2'? Вы говорите в своей проблеме, что значения (сумма) из первой строки применяются ко всем значениям «третьего столбца» вместо того, чтобы идти по строкам подряд? – Chrismas007

+0

Да, правильно. Это проблема – user3196470

Смежные вопросы