セルから、現在のシートの左 (トレイの下) にあるシートのセルからデータを取得する方法を見つけようとしています。
経由で他のシートを呼び出す方法を知っています
=Sheet1!A1
しかし今、私は最もよく説明された何かが必要です
=Sheet[-1]!A1
何か案は?
セルから、現在のシートの左 (トレイの下) にあるシートのセルからデータを取得する方法を見つけようとしています。
経由で他のシートを呼び出す方法を知っています
=Sheet1!A1
しかし今、私は最もよく説明された何かが必要です
=Sheet[-1]!A1
何か案は?
計算の基本的な部分としてタブ オーダーを使用することは、Excel の計算に対する複雑で危険なアプローチです。Excel には、使用したほうがよい多くの代替手段が用意されています。
ベリサリウスの提案の簡略化されたバージョンは次のとおりです=INDIRECT(A1 & "!A2")
。セル A1 にはデータソース シートの名前があり、A2 にはデータソース シートのターゲット セルの名前があります。対象のシートの名前がわかっている (または何らかの方法で調べることができる) 場合は、この方法を使用します。
これを頻繁に行う必要がある場合は、データを実際のデータベース (つまり、MS Access) にエクスポートすることをお勧めします。次に、標準の SQL クエリを作成し、結果を Excel ファイルにインポートできます。
どうしても VBA ルートに行きたい場合は、次のようなコードを作成する必要があります
。アクティブなブックのすべての名前を取得し、それらを配列に格納します。
3b. その配列で現在アクティブなワークブックのインデックス番号を識別します。そのインデックスから 1 を引いて、シートを左に移動します。
3c。そのシートからセル値を取得します。
名前付き範囲で気紛れになることもできます。Excel 2003 では、[挿入] -> [名前] -> [定義]に移動し、新しい名前付き範囲を追加すると、行と列でセルを参照する代わりに、計算でその名前を使用できます。
これに関する全体的なアイデアは、シートを配置し、それらを移動できるということです。これにより、計算が変更されます。– Gnutt 1時間前
お願い、お願い、しないで。まず第一に、これはスプレッドシートを操作する標準的な方法ではありません。エンドユーザーは混乱する可能性が高く、説明を求めさえしない可能性があります。
データ検証のアイデアを探求したいと思うでしょう:
または、 Tools->Scenariosを確認することもできます。この機能を使っている人を私は知りませんが、あなたは良い候補になるかもしれません。基本的に、さまざまなデータセット (つまり「シナリオ」) を使用した計算結果を表示できるため、ユーザーはそれらの間を行き来できます。
上記の 2 つの方法のいずれかを使用すると、VBA を完全に回避できる可能性が高くなり、ユーザーがファイルを開いたときに迷惑な警告メッセージが表示されなくなります。
ここでは良い習慣とは見なされていないことは知っていますが、似たようなことをしたいと思います。また、データベース機能をある程度複製しますが、すでに半分が配置されている場合、データベース機能を最初から構築する時間やサポートがありません。
これを実行できるようにする理由は、ブック内のすべてのワークシートにリンクし、新しいワークシートを挿入すると自動的に拡張されるサマリーテーブルを作成するためです。これは、すべて同じ構造を持つ多くの異なるビジネスユニットを含む大規模な販売/レポートスプレッドシートを管理するためです(つまり、同じワークシート形式を使用して、異なる人々に対して同じ結果をレポートします。売上高が高いです。いくつかの要約が必要です。ソースシートのさまざまな側面を報告するシート。これは、すべてのテーブルを毎回再作成する場合、管理に非常に時間がかかります。
row()をインデックスマーカーとして使用して、REPLACE、OFFSET、INDEXなどを使用して必要な情報を定義できるはずですが、2D配列のみを参照しているためできません 。
Excelは3D参照を統計関数の配列として扱いますが、参照関数の場合は同じようには見えません。SUM(sheetX:sheetY!A1)があり、その間にシートを追加できる場合がありますが、(たとえば)INDEX(sheetX:sheetY!A1、n)関数はありません。これらの2D関数を配列数式の一部として使用し、3D参照を配列または名前付き範囲として定義してみました...それは一見の価値があります:)。
ですから、それは有効な行動だと思います。また、それを行う方法があるはずだと思いますが、今のところ、計算の問題やWorkbook_SheetChange関数などの操作によってエラーが発生するリスクがあるUDFに頼っています。または、すべてのワークブックの配列に基づくサブルーチンを使用して入力される他のすべてを制御する単一のマスターシートを作成します。
=INDIRECT("Sheet"&TEXT(VALUE(MID(CELL("filename",A8),FIND("]",CELL("filename",A8))+1,256))-1,"#")&"!A1")
警告: