- 締切済み
excelで任意のブックの特定範囲の値を返す
会社で使っているソフト(Xソフトとします)から、デスクトップに出力されるexcelファイルがあります。 そのファイルに出来上がっている全てのシートの同じセル範囲から、 ひとつのexcelファイルに値を抜き出したいと考えています。 いきなり範囲で抜き出すのは難しいかと思い、とりあえずひとつのセルの値を抜き出せないかと試行錯誤しています。 book1のA1セルに、book2****のD1セルの値を入力したい場合 book1のA1セルに以下のように入力していますが#REF!と表示されてしまいます。 =indirect("'["&B1&".xls]"&C1&_1&"!D1") Xソフトから作成されるexcelファイルの名称が、作成した日時を反映するようになっているため、book2****の****部分には日時が入ると思ってください。つまり、book2の名称は Xソフトからデスクトップに保存する度に変化してしまいます。 また、book2****に作成されるシートはXソフトから取り出したいデータ量によって変わり、 その名称はbook2****の各シートのC1セルの文字列に_1、_2、、、、と連番になる仕組みになっています。 そのため、book1のB1セルにbook2のファイル名称を入力し、 シート名はbook2****のC1セルの文字列と_1(、_2、、、)を組み合わせることで D1セルの値を返したいと思っています。 マクロやvbaの経験はあまりないため、関数でがんばっているのですがうまくいきません。 本当は、Xソフトから作成されたファイルをクリックするだけで読み込めるような仕組みが作れるのが理想なのですが、なかなかできず困っています。 どなたか詳しい方おりましたら教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1734/2604)
> ブック名:book2**** > シート名:○×△_1 > book2****の○×△_1のC1セルには○×△と入力されている状態です。 > > Sheet名も参照で引っ張ってきたいのです。 ○×△が書かれているセルを参照するには [book2****]○×△_1!C1 と指定しなければいけないわけですが、そこに参照先シート名の○×△が書かれているわけですよね。 さて、○×△が参照先シート名○×△_1に書かれていて、それを参照するのにどうやって○×△が書かれているシート名○×△_1を知ることができるのでしょうか? 無理だと思いますが。 メールのあて先は送ろうとしている相手がしっているのでメールで確認してださいといってるようなものだと思いますが・・・
- kkkkkm
- ベストアンサー率66% (1734/2604)
No1の訂正です。 No1は無視してください。 A1に =INDIRECT("[" & B1 & ".xls]" & INDIRECT("["&B1&".xls]Sheet1_1!$C$1") & "_1" &"!$D$1") Sheet1_1は実際に文字列データのあるBook2のC1セルのシート名に変更してください。
- kkkkkm
- ベストアンサー率66% (1734/2604)
Book2を開いて更新するということでしたら Book1の(セルは例えばですので適宜変更してください) C2に ="[" & B1 & ".xls]" & C4 &"!$D$1" C3に ="["&B1&".xls]Sheet1_1!$C$1" Sheet1_1は実際に文字列データのあるBook2のC1セルのシート名に変更してください。 C4に =INDIRECT(C3) & "_1" として A1に =INDIRECT(C2) としてください。
補足
お返事が遅くなってしまい申し訳ありません。 早速の回答ありがとうございます。 試してみたのですが、ちょっとほしいものと違いました^^; >Sheet1_1は実際に文字列データのあるBook2のC1セルのシート名に変更してください。 ブック名:book2**** シート名:○×△_1 book2****の○×△_1のC1セルには○×△と入力されている状態です。 Sheet名も参照で引っ張ってきたいのです。 book2****というブック名をbook1のB1セルに入力するだけで、 book2****のD1セルを参照できるようにしたいのですが、可能なのでしょうか? 何度もすみませんが、よろしくお願いいたします。