Theoは、Excelワークシートを使用して、会社の予約を追跡しています。データは3列のみで構成されています。 1つ目は人の名前、2つ目は予約の最初の週の番号(1-52)、3つ目は予約の最後の週の番号です。

人々は複数の週に予約することができます(つまり、開始週は15、終了週は19です)。 Theoには、週番号を入力してから、その週番号に関連付けられている名前(列A)を数式で決定する方法が必要です。データは特定の順序で並べ替えられておらず、会社はTheoにマクロを使用させて結果を取得させません(数式である必要があります)。

Theoの状況は単純に聞こえますが、解決策を考案する際の落とし穴に満ちています。 (次の図に示すように)潜在的なデータを見ると、これが当てはまる理由がすぐにわかります。 (図1を参照)

image

図1.テオの問題の潜在的なデータ。

(Theoが言ったように)データは特定の順序ではないことに注意してください。

また、予約がない週(5週目や6週目など)、複数の人がいる週(11週目や16週目など)、誰かが予約している週もあることに注意してください。番号は列BまたはC(12週目または17週目など)に表示されません。

考えられる解決策を検討する前に、知りたい週がセルE1であると仮定しましょう。この範囲にはQueryという名前を付ける必要があります。さらに、人の名前(この例ではセルA2:A10)を含む範囲にResNames、開始週(B2:B10)をStartWeeks、終了週(C2:C10)をEndWeeksと名付けます。最後に、MyDataなど、テーブル全体(A2:C10)の名​​前を定義します。この命名は、厳密には必要ではありませんが、数式の理解をはるかに容易にします。

考えられる解決策の1つは、一般に「ヘルパー列」と呼ばれるものを追加することです。セルD2に以下を追加します:

=IF(AND(Query>=B2,Query<=C2),"RESERVED","")

テーブル内の名前と同じ数のセルについて、数式をコピーします。 (たとえば、セルD10にコピーします。)セルE1に週番号を配置すると、その週番号を含む予約の右側に「RESERVED」という単語が表示されます。また、その週に複数の人が予約されているかどうか、またはその週に予約されている人がいないかどうかも簡単に確認できます。 AutoFilterを適用して、列Dに「RESERVED」という単語が含まれるレコードのみを表示するように選択することもできます。

必要に応じて、ヘルパー列を省略し、条件付き書式を使用して、希望する週に予約されているユーザーを表示することを検討できます。

列Aで名前を選択し、次の数式を使用する条件付き書式ルールを追加するだけです。

=AND(Query>=B2,Query<=C2)

(条件付き書式ルールの入力方法については、_ExcelTips._の他の問題で詳しく説明されています。)セルに適用されるシェーディング(パターン)を変更するようにルールを設定すると、どの予約が適用されるかを簡単に確認できます。興味のある週。

別のアプローチは、配列数式を使用することです。重複する予約の数よりも数個多いセルを選択し、Ctrl + Shift + Enterを押してそれらのセルに次のように入力します。

=IFERROR(INDEX(ResNames,LARGE((StartWeeks<=Query)(EndWeeks>=Query)(ROW(ResNames)),ROW()-1)-1),"")

セルの数を選択するときは、この配列数式が占めるようにします。たとえば、11週目に予約される可能性のある人数を確認します。このヒントに示されている例では、2人です。その数より多くのセルを選択してから、それらのセルに配列数式を入力します。

同じ週に20人が予約される可能性があると予想される場合は、20や30など、より多くのセルを選択することをお勧めします。セルを選択し、数式を数式バーに入力してから、 Ctrl + Shift + Enterを押します。

最後に、データのレイアウトを変更することを検討する必要があります。

列A(1から52または53)に週番号が含まれるワークシートを作成し、列Bに名前を配置できます。2週間予約された場合、その名前は列Bに2回表示され、それぞれの横に1つずつ表示されます。彼らが予約した2週間。

この形式のデータを使用すると、データを簡単にスキャンして、利用可能な週、取得された週、および取得された人を確認できます。

ある種のルックアップを実行する場合は、週番号に基づいてVLOOKUP関数を使用するのは簡単です。これは、データの最初の列であり、ソートされた順序であるためです。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11078)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。