Excel 2010の別のシートに列をミラーリングする


6

同じExcelブック内の列を1つのExcelシートから別のExcelシートにミラ​​ーリングしようとしています。目標は、最初のシートが編集されるときに2番目のシートを更新することです。基本的に、最初のシートで行を追加/削除すると、2番目のシートでも同じことが自動的に行われます。

私の列には従業員の名前があり、人々がオフィスに出入りするとき、それに応じてそれらを追加/削除します。私のシートは異なるデータを追跡しますが、従業員はすべて同じです。最初のシートはプライマリシートで、残りはそれに応じてデータを取得します。ミラーリング式は機能しますか?また、列全体に適用するにはどうすればよいですか?

回答:


3

ここに、VBAなしのアイデアがあります。「オフセット」です。

元のデータが「Sheet1」にあり、「Sheet2」のすべてのセルをミラーリングするとします。Sheet2のセルには、次のものを使用できます。

=OFFSET(Sheet1!$A$1,Row(A1)-1,COLUMN(A1)-1,1,1)
  • Sheet1!$A$1:メインの参照セルです。これは、移動または削除できない唯一のセルです。これを防ぐために、列1を空白のままにして非表示にすることができます。
  • Row(A1)-1: "Row(A1)"は、Sheet2のどの行にいるかを判断します。 "-1"は、オフセットを中和します(次の行ではなく、現在の行とまったく同じ行を読みたくない)。
  • COLUMN(A1)-1:上記と同じですが、列を把握します。
  • ,1,1):範囲のサイズをセルに設定します(1 by)

メインの参照セル(この例ではA1)を削除しない限り、Sheet1で何を実行しても、それが機能するはずです。

この方法で見つかる可能性のあるいくつかの問題:

  1. データ(Sheet1)の間に空白がある場合、多くのゼロが表示されるのを避けるために、いくつかの書式設定または追加の数式が必要になる場合があります。
  2. 数式を「counta」または「average」として使用しようとすると、これらのゼロによって結果が変更される場合があります(非表示にしても、数式に影響します)。

1

これは単純な式ではできません。Sheet1で行を追加または削除すると、Sheet2で行を追加または削除するための数式では不十分です。そのためには別のアプローチが必要です。

1つのオプションは、新しい行の削除と追加を管理するVBAを作成することです。

別の方法は、行を削除する代わりに非表示にすることです。従業員がアクティブまたは非アクティブとしてマークされている列を追加します。次に、テーブルをフィルタリングして、非アクティブな従業員を非表示にします。

数式を使用して、Sheet1からSheet2に名前を取得し、各行のアクティブ/非アクティブな値を取得することもできます。たとえば、名前がsheet1の列Aにある場合、Sheet2でこれを使用します

= index(Sheet1!$ A:$ A、row())

ステータス(アクティブ/非アクティブ)が列Bにある場合=index(Sheet1!$A:$A,row())は、別の列で使用してから、その列でフィルタリングします。

ただし、1つの大きな固有の危険があります。Sheet1で従業員の順序が変更された場合、Sheet2のデータはすべて間違っています。従業員の順序は引き続きSheet1の順序と一致しますが、残りのデータは新しい並べ替え順序では移動しません。

VBAを使用したアプローチはより堅牢です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.