4

1つのファイルに配列があります。例:

    名前年齢靴のサイズ
    アンドリュー1912
    メアリー178
    サラ1510
    ウェズリー1911

名前とデータ型に基づいて1つのデータを特定したいと思います。たとえば、ピンポイントSarahAge、セルに読み取りたい15

ダブルルックアップに関するこの役立つガイドを読みましたが、それでも1つのことが気になります。

式は次のとおりです。

=OFFSET(A1:C5,MATCH("Sarah",OFFSET(A1:C5,0,0,ROWS(A1:C5),1),0)-1,MATCH("Age",OFFSET(A1:C5,0,0,1,COLUMNS(A1:C5)),0)-1)

データが同じファイルにある場合は機能しますが、別のファイルから指定された数式を使用しようとすると、#VALUE!エラーが発生します。

葯ファイルから読み取るためのコード(私がしたのはファイルパスを追加することだけでした):

=OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,MATCH("Sarah",OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,0,0,ROWS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5),1),0)-1,MATCH("Age",OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,0,0,1,COLUMNS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5)),0)-1)

ここでは、読みやすいように間隔が空けられています。

=OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,
MATCH("Sarah", OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5, 0, 0,
ROWS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5),1), 0)-1,
MATCH("Age", OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5, 0, 0, 1, 
COLUMNS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5)), 0)-1)

他のファイルが気に入らない理由を誰かが知っていますか?同じ情報です。

これを修正するにはどうすればよいですか?

前もって感謝します :)

4

2 に答える 2

4

スコットの答えを拡張するために、閉じたブックへの外部パスは参照ではなく配列のように扱われるため、OFFSET、SUMIF、COUNTIFなどの引数で参照を期待する関数は、ブックが閉じた場合にエラーを返します。

一方、INDEXは引数として配列を許可するため、代わりに次のように入力してみてください。

=INDEX(A1:C5,MATCH("Sarah",INDEX(A1:C5,0,1),0),MATCH("Age",INDEX(A1:C5,1,0),0))

これにより、閉じたワークブックへの参照も可能になります。

INDEXのさらなる利点は、揮発性ではないため、依存セル(A1:C5)のいずれかのセルが変更されたときにのみ再計算されるのに対し、OFFSETは揮発性関数であり、ワークブックのどこかで変更が行われるたびに再計算されることです。効率が悪い。

于 2012-08-02T09:20:17.510 に答える
2

一部の関数では、ターゲットワークブックが開いている必要があります-オフセットはこれらの1つです。間接とSumifとCountifは他です。ターゲットを開くか、プロセスを再設計する必要があります。

オフセット関数に似ているので、インデックス関数を使ってみることができます。

于 2012-08-01T20:47:49.397 に答える