![Excel の派生ワークシートからマスター ワークシートの参照セルを編集する](https://rvso.com/image/1313340/Excel%20%E3%81%AE%E6%B4%BE%E7%94%9F%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%8B%E3%82%89%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%20%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E5%8F%82%E7%85%A7%E3%82%BB%E3%83%AB%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B.png)
私は Excel 2010 を使用しており、2 つのワークシートがあります。シート A には一意の識別子列と、値を持つ他の列があります。シート B には識別子のリストと、VLOOKUP
シート A の値から数式を使用して入力する他のフィールドがあります。
理想的には、シート B の値を編集してシート A の値を更新したいのですが、これは不可能のようです。試してみると、数式を=VLOOKUP
生データで上書きするだけです。これを行う方法はないというのは正しいでしょうか?
あるいは、シート B の数式を含むセルからVLOOKUP
シート A の元のセルにクリックスルーしたり、何らかの方法で自動的にジャンプしたりするトリックはありますか?
私の全体的な目標は、シート A にすべての生の値を保持し、データを更新するためにシート A を手動で検索することなく、シート B からのみこれらの値を参照することです。
答え1
代替リクエストを実装するには、HYPERLINK
関数を次のように使用します。VLOOKUP
Sheet A
列AにID、列Bに値が含まれていると仮定してVLOOKUP
、
=HYPERLINK("#'Sheet A'!B"&MATCH(A2,'Sheet A'!$A:$A,0),VLOOKUP(A2,'Sheet A'!$A:$B,2,0))
これにより、VLOOKUP
以前と同じように結果が表示されるだけでなく、セルをクリックするとシート A で見つかった値へのハイパーリンクが表示されます。
答え2
現在直面している主な問題は循環参照です。
VLOOKUP はA = B
リレーションシップではありませんが、リレーションシップに似ていますif A then B
(この場合、A と B は値の配列です)。言い換えると、これは一方向であり、A は B に依存しません。私が見る限り、Excel には、数式をバックエンドに保存できないため (マクロを使用しない限り)、ユーザー インターフェイスのみを使用して循環参照を処理する直接的な方法はないと思います。
1 つの方法は、A と B の両方に相対値を設定し、3 番目のシート (または多くの追加列) で条件付きセルを作成することです。たとえば、シート A には相対値 (シート B の新しい更新値またはシート C の元の値) が保持され、シート C には元の値が保持され、シート B には値を反映するセルと更新値を保持するセルが保持されます。
シート B で、参照される列ごとに新しい列を作成します。これが更新値列になります。シート C に元の値を保存します。シート A では、「シート B の更新値フィールドに値がある場合はそれを使用し、それ以外の場合はシート C を参照する」という条件を使用します。シート B の反映値列は引き続きシート A を参照するため、更新列に新しい値がある場合は動的に変更されます。これは循環参照の問題を解決しているのではなく、単に回避しているだけであることに注意してください。
ただし、シート A を相対値ではなく固定値にする必要がある場合は、paste as value
次のようなものをコピーして使用する必要があります。
ActiveSheet.Range("A1:D1000").Value = ActiveSheet.Range("A1:D1000").Value
VB で相対値 (数式付き) を固定値に変換します。