Microsoft Excel - 複数の条件に基づいて別のシートから行全体をコピーする

Microsoft Excel - 複数の条件に基づいて別のシートから行全体をコピーする

さて、私はしばらくの間この答えを見つけようとしてきましたが、数式バーに保持できる以上のものが必要になり、マクロの経験がまったくないため、具体的に数式を使用して答えを得ることができません。

ルール:

ルール 1. Fox/Golf/Hotel!A4 は常に 1 日、A34 は常に 31 日になります (A33=30 日、A32=29 日 (該当する場合)、A31=28 日)

ルール1a. Fox!A36:A37とFox!A39:A40は日付にならない

ルール 1a.1. Fox!A36 は「スーパー 1-16」、Fox!A37 は「スーパー 17-31」になります。

ルール 1a.2. Fox!A39 は「プライマリ」、Fox!A40 は「スーパーニューメラリー」になります。

ルール 1b. ゴルフ/ホテル!A36:A37 は決してデートにはなりません。

ルール 1b.1. ゴルフ/ホテル!A36 は「スーパー 1-16」、ゴルフ/ホテル!A37 は「スーパー 17-31」になります。

ルール 2. Alpha/Bravo/Charlie/Delta! の対応する日付は、セル B3:B400 のいずれかになります。

ルール 3。「Position」は「Alpha/Bravo/Charlie/Delta!A3:A400」のバリアントですが、「Fox/Golf/Hotel!」セルでは常に定数になります (定数については以下を参照してください)。

ルール 3a. Fox!「ポジション」の指定:

  1. B2="OOD" であり、C4:G34 をカバーする必要があります。
  2. I2="AOOD"であり、J4:M34をカバーする必要があります。
  3. O2="DD"であり、P4:S34をカバーする必要があります。
  4. A35="OOD SUPERNUMERARY" であり、C36:G37 をカバーする必要があります。
  5. A38="CDO"であり、C39:G40をカバーする必要があります。
  6. I35="ADNCO SUPERNUMERARY" であり、J36:J37 をカバーする必要があります。
  7. O35="DD SUPERNUMERARY" であり、P36:S37 をカバーする必要があります。

ルール 3b. ゴルフ/ホテル!「ポジション」の指定:

  1. B2="DNCO" であり、C4:F34 をカバーする必要があります。
  2. H2="ADNCO" であり、I4:L34 をカバーする必要があります。
  3. N2="ローバー1"であり、O4:R34をカバーする必要があります。
  4. T2="Rover 2" であり、U4:X34 をカバーする必要があります。
  5. A35="DNCO SUPERNUMERARY" であり、C36:F37 をカバーする必要があります。
  6. H35="ADNCO SUPERNUMRARY" であり、C39:L40 をカバーする必要があります。
  7. N35="ROVER 1 SUPERNUMRARY" であり、J36:R37 をカバーする必要があります。
  8. T35="ROVER 2 SUPERNUMRARY" であり、P36:X37 をカバーする必要があります。

ルール 4. 次のセルは、どのシート情報がコピーされるかを指定します。

ルール 4a. フォックス!(B は C:G を指示します。I は J:M を指示します。O は P:S を指示します)

ルール 4a.1. B4:B34 (Fox!B4="A"、Fox!B2=Alpha!A136、Alpha!B136="5 月 1 日" の場合、Fox!C4:G4 = Alpha!C136:G136)。

ルール 4a.2。I4:I34 (Fox!I7="D"、Fox!I2=Delta!A98、Delta!B98="May 4" の場合、Fox!J4:M4 = Delta!C98:F98)。

規則4a.3. O4:O34.

ルール 4a.4. B36:B37 (Fox!B36="C"、Fox!A35=Charlie!A250、Charlie!B250="May 1-16" の場合、Fox!C36:G36 = Charlie!C250:G250)。

ルール 4a.5。B39:B40 (Fox!B40="B"、Fox!A38=Bravo!A123、Bravo!B123="Supernumerary" の場合、Fox!C40:G40 = Bravo!C123:G250)。

規則4a.6. I36:I37.

規則4a.7. O36:O37.

ルール 4b. ゴルフ/ホテル!(B は C:F を指示します。H は I:L を指示します。N は O:R を指示します。T は U:X を指示します)

規則4b.1. B4:B34.

規則4b.2. H4:H34.

規則4b.3. N4:N34.

ルール4b.4. T4:T34。

規則4b.5. B36:B37.

規則4b.6. H39:H40.

規則4b.7. N36:N37.

ルール4b.8. T36:T37.

Fox/Golf/Hotel! の日付 (Fox/Golf/Hotel!A4:A40) とルール 3 で設定された「位置」フィールドに基づいて、「Alpha/Bravo/Charlie/Delta!B3:G400」のセルを「Fox/Golf/Hotel!」の対応するセルにコピーする必要があります。

リクエストが混乱しないように編集します:

これは私が担当している月間勤務表であり、関係者全員にとって業務が楽になるように努めています。

シート Fox!、Golf!、Hotel! は、当社が所有する特定の建物に対応し、シート Alpha!、Bravo!、Charlie、Delta! は、当社のセクションに対応します。

Fox/Golf/Hotel! は、Alpha/Bravo/Charlie/Delta! から情報を取得して入力されます。毎月コピーして貼り付けなくてもよいように、これを自動化したいと思います。

数式を作成しようとしましたが、多くの IFAND をネストすると収まりきりませんでした。

上記には多くの情報が含まれていることは承知していますが、できる限り要約してみたいと思います。

シートフォックスの場合!、

ステップ 1. セル B4:B34 を使用して、どのシートから情報を取得するかを決定する必要があります (B4=A の場合はシート Alpha! から取得します。B4=B の場合はシート Bravo! から取得します。B4=C の場合はシート Charlie! から取得します。B4=D の場合はシート Delta! から取得します。)

ステップ 2. シートが決定したら、セル B2 を使用して Alpha/Bravo/Charlie/Delta!A3:A400 の一致を検索する必要があります。

ステップ 3. 一致が見つかったら、セル A4:A34 を使用して、Alpha/Bravo/Charlie/Delta!B3:B400 の一致を検索する必要があります。

ステップ 4. 両方の一致が同じ行で見つかったら、セル Alpha/Bravo/Charlie/Delta!C3:G400 をコピーする必要があります。

Fox! の例:

例 1. Fox!B4="A"、Fox!B2=Alpha!A136、Alpha!B136="5 月 1 日" の場合、Fox!C4:G4 = Alpha!C136:G136 になります。

例 2. Fox!B4="B"、Fox!B2=Bravo!A136、Bravo!B136="5 月 1 日" の場合、Fox!C4:G4 = Bravo!C136:G136 になります。

例 3. Fox!B4="C"、Fox!B2=Charlie!A136、Charlie!B136="5 月 1 日" の場合、Fox!C4:G4 = Charlie!C136:G136 になります。

例 4. Fox!B4="D"、Fox!B2=Delta!A136、Delta!B136="5 月 1 日" の場合、Fox!C4:G4 = Delta!C136:G136 になります。

ゴルフ/ホテルの例:

例 1. Golf!B4="A"、Golf!B2=Alpha!A136、Alpha!B136="5 月 1 日" の場合、Golf!C4:F4 = Alpha!C136:F136 になります。

例 2. Hotel!B4="B"、Hotel!B2=Bravo!A136、Bravo!B136="5 月 1 日" の場合、Golf!C4:F4 = Bravo!C136:F136 になります。

例 3. Golf!B4="C"、Golf!B2=Charlie!A136、Charlie!B136="5 月 1 日" の場合、Golf!C4:F4 = Charlie!C136:F136 になります。

例 4. Hotel!B4="D"、Hotel!B2=Delta!A136、Delta!B136="5 月 1 日" の場合、Hotel!C4:F4 = Delta!C136:F136 になります。

個々の例ごとに実行するのは簡単ですが、それぞれのページのすべてのセルで 4 つの例すべてをアクティブにする必要があります。

答え1

悪気はないけど、今までで最悪の言い回しの質問だ!あと、フォーマットも!

TL;DR、これが必要なことだと思うもの

これを C4 に入れると、A から D がシート名に変換されます。

=CHOOSE(CODE(B4)-CODE("A")+1,"Alpha!","Bravo!","Charlie!","Delta!")

次に、D4で、選択したシートのB2一致が発生するインデックスまたは行番号を計算します。

=MATCH($B$2$, INDIRECT(C4 & "A3:A400"),0)

ここで、E4では、A4が他のシートのB列:インデックスD4と一致する場合の条件で、他のシートの値にリンクします。

=IF(A4 = INDEX(INDIRECT(C4 & "B3:B400"),D4), *link to cells in C to G cells*, *return blanks*)

最終的に、これは配列数式として E4:I4 に入力されます (E4 から I4 を選択し、F2 を押して、以下の数式を貼り付け、Ctrl + Shift + Enter を押します。Enter のみでは機能しません)。これで、1 つの配列数式が E4:I4 の複数のセルを占めるようになります。(Office 365 では、数式を E4 にのみ入力でき、I4 にも入力できます)

=IF(A4 = INDEX(INDIRECT(C4 & "B3:B400"),D4), INDEX(INDIRECT(C4 & "C3:C400"),D4):INDEX(INDIRECT(C4 & "G3:G400"),D4), "")

関連情報