2014-01-17 3 views
0

мне нужно создать формулу матча на основе клеток, как например ниже:Создать формулу на основе клеток

+------+--------+--------+ 
| Col1 | SumCol | Val | 
+------+--------+--------+ 
| 1 |  8 | v1  | '=Match([otherWorkbook]MainSheet!C1,RC3,[otherWorkbook]MainSheet!C8) 
| 2 |  5 | v44* | '=Match([otherWorkbook]MainSheet!C2,RC3,[otherWorkbook]MainSheet!C5) 
| 3 |  7 | ls* | '=Match([otherWorkbook]MainSheet!C3,RC3,[otherWorkbook]MainSheet!C7) 
+------+--------+--------+ 

Чтобы построить формулу, мне нужно, чтобы получить строку «[otherWorkbook] гик» и сцепить с Ячейка из колонки Col1. Затем мне нужно получить значение из столбца Val. Наконец, я снова собираю конкатенацию строки «[otherWorkbook] MainSheet» с ячейкой из столбца SumCol.

Я ожидаю формулы, как =Match([otherWorkbook]MainSheet!C1,RC3,[otherWorkbook]MainSheet!C8). Я мог бы сделать это, используя две колонны temp, чтобы сделать конкатенацию, а затем, постройте формулу излечения.

PS: Я использую VBA для создания формулы, поэтому я могу использовать ее для достижения своей цели.

+0

Если ваши в УВЕ просто объединить значение ячеек в формуле строки ... – user2140261

+0

Но я, как 5000 линий для заполнения. Если я зациклирую линию ведьмы, макрос займет слишком много времени, чтобы выполнить задачу. Вот почему я хочу создать формулу, а затем 'AutoFill()' - или просто 'Range (...). FormulaR1C1 =' – Makah

+0

Нет другого пути. – user2140261

ответ

1

Может быть, вам нужно что-то вроде это:

Sub AddFormulas() 

    myOtherWorkbook = "[otherWorkbook]" 

    myFormula1 = "=Match(" & myOtherWorkbook & "MainSheet!C" 
    myFormula2 = ",RC3," & myOtherWorkbook & "MainSheet!C" 

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row 
    For x = 2 To lastRow 'Loops from row 2 to the last of column "A" 

     Cells(x, 4).Formula = myFormula1 & Cells(x, 1) & myFormula2 & Cells(x, 2) & ")" 

    Next x 


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