2016-09-14 6 views
0

インデックスの配列の数式をセルに挿入しようとしています。私の問題は、私は数式内の変数を使用する必要があり、その結果、アポストロフィで囲まれた数式内のセル参照になります。vbaで数式を挿入するときにアポストロフィを避ける

Cells(loop, "H").value = "=INDEX('Tab Asistencias'!R1C1:R20000C4,MATCH(1,('Tab Asistencias'!R1C2:R20000C2=R2C2)*('Tab Asistencias'!R1C1:R20000C1=E" & loop & "),0),4)" 

そして、式はすでにセルH1に挿入されたときには、次のようになります:これは、これまで私が持っているコードです

:私は例とのより良い自分自身を説明します

= 'B' Asistencias '!$ A $ 1:$($' '); $ INDEX(' Tab Asistencias '!$ A $ 1:$ D $ 20000; COINCIDIR(1;(' Tab Asistencias '!$ B $ 1:$ B $ 20000 = $ B $ 2) $ 20000 = 'E2'); 0); 4)

E2セルリファレンスの2つのアポストロフィは、ほとんどの場合、式の最後にあります。そのため、ExcelはE2を有効なセル参照として認識しません。

私はスペイン語版のExcelでこれをやっています(そうする必要があります)。

ご協力いただきありがとうございます。

+0

最も簡単な方法VBAで物事を把握するためには、マクロの記録を使用して生成されたコードをチェックすることです。 '.Value = 'の代わりに' .FormulaArray = 'を使う必要があります。 – Slai

+0

あなたの答えをありがとう。すでにそれを試して、評価を使用していますが、どちらもうまくいきませんでした。私は値としてのみ数式を挿入し、次にF2キーを押し、次にCtrl + Shift + EnterキーをシミュレートするSendKeyメソッドを使用します。 – mFranck

答えて

0

VBAループの英語版が予約語であるため、ループの名前を変更する必要があります。

ここで、loop = 2; E" & loop & "は、R1C1スタイル表記とA1スタイル表記が混在しているため、'E2'と評価されています。

ここでは、適切な参照を得るためにループの代わりにxとR" & x & "C5を使用します。

Cells(x, "H").Value = "=INDEX('Tab Asistencias'!R1C1:R20000C4,MATCH(1,('Tab Asistencias'!R1C2:R20000C2=R2C2)*('Tab Asistencias'!R1C1:R20000C1=R" & x & "C5),0),4)" 

出力:

=INDEX('Tab Asistencias'!$A$1:$D$20000,MATCH(1,('Tab Asistencias'!$B$1:$B$20000=$B$2)*('Tab Asistencias'!$A$1:$A$20000=$E$10),0),4)

+0

ありがとうございました!それは素晴らしい仕事をした。 – mFranck

関連する問題