5

他の閉じた Excel ワークブックからデータを描画する Excel シートがあります。現在、閉じたワークブックのパス全体を一覧表示すると問題なく動作しますが、別のセルに格納されている変数をパス名の一部として使用したいと考えています。

たとえば、私はというワークブックを参照しようとしています

workbook12.10.12.xls

別のワークブック (「アクティブな」ワークブックと呼びます) に、数式を含むセルがあります

=INDEX('C:\Path[workbook12.10.12.xls]SHEET1'!$B$1:$B$5, MATCH("マッチテキスト", 'C:\Path[workbook12.10.12.xls]SHEET1'!$A $1:$A$5, 0))

「一致テキスト」を含む A 列のセルに対応する workbook12.10.12 の B 列の値を検索します。これは正常に機能します。ただし、アクティブなワークブックに値を持つセルがあります

12.10.12

何らかの形で INDEX 関数でこの値を参照したいと考えています。

他のワークブックを開くことができないため、INDIRECT 関数は役に立ちません。グーグルは、Excelにはこの種のことに対する単純なワンストップソリューションがないことを示唆しているようです.誰か助けてもらえますか? ありがとう!

4

3 に答える 3

3

DicksBlogでのFrankKabelの2004年の投稿から、次のことができます。

  1. Use Laurent Longreは、関数INDIRECT.EXTを含む無料のアドインMOREFUNC.XLLを開発しました
  2. ここで説明されているようにSQL.REQUESTを使用します*サポートされなくなったようです。これでINDEX\MATCHリクエスト を処理できるかどうかはわかりません。
  3. HarlanGroveのPULL関数を使用する

さらに、次のことができます。

  1. 必要なワークブックを参照する数式を入力するコードを介して、 「ダーティリンク」を直接作成します
  2. 値を取得する場合(範囲を操作する場合は不可)、WalkenbachのExecuteExcel4MacroXLMメソッドを使用できます。
于 2012-12-11T00:08:46.577 に答える
0

閉じたファイルの範囲へのファイル パスを含む完全な参照を Excel の名前で保存し (直接または異なるセルの選択に基づいて上記の Worksheet_Change 手順を使用して VBA を介して)、次に、通常どおり式に名前を付けます。これにより、INDIRECT 関数の制限が解消されます。

VBA は非常に単純です。

New_Ref = Sheets("ウェル").Range("K6")

ActiveWorkbook.Names("MyWorkbook").RefersTo = "=" & New_Ref

唯一の秘訣は、名前に必ず「=」を含めることです。

これを見つけると、名前には非常に多くの用途があります。これを使用して、リモートの共有ポイント サイトの閉じたファイルから問題なくデータを取得しました。共有ポイントがすべてのアクセス許可を処理していると想定しています。

于 2015-03-31T10:07:31.473 に答える
0

あなたが何をすべきかは、特定のファイル(名前が付けられた日付)で特定のレコードを見つけることだと思います。簡単な VBA コードで実行できます。

たとえばREC001A1でレコード番号を検索し、12.10.12セルC1で日付ファイルを検索し、結果をセルA7に表示するとします。

入力を入力して出力を取得するワークシートで、シート タブを右クリックし、[コードを表示] を選択して、次のコードを貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C1")) Is Nothing Then Exit Sub
Range("A7").Formula = "=INDEX('C:\TEMP\[workbook" & Range("C5").Value & ".xls]SHEET1'!$B$1:$B$5, MATCH(" & Range("A1").Value & ", 'C:\TEMP\[workbook" & Range("C5").Value & ".xls]SHEET1'!$A$1:$A$5, 0))"
End Sub

その後、C1 を編集するたびに式が更新されます。

実際、あなたのケースでは INDEX 関数を使うべきではないと思います。VLOOKUP を使用する方が簡単です。例えば:

Range("A8").Formula = "=vlookup(" & Range("A1").Value & ",'C:\TEMP\[workbook" & Range("C5").Value & ".xls]SHEET1'!$A$1:$B$5,2,false)"

いくつかの点に注意する必要があります: 1. Sheet1 オブジェクト (またはシート名) にコードを貼り付けますが、新しいモジュールを挿入しないでください 2. .xls を含め、ターゲット ファイルのパスとファイル名が正しいおよび .xlsx 3. 元のファイルは $B$5 までしかカバーしていません 4. VBA では、ファイルを .xlsm 形式で保存することをお勧めします

于 2012-12-11T06:22:29.990 に答える