2 つの列のセットがあります。列 F には、予定されている出席者の名前のリストがあります。列 C は、列 A でバッジをスキャンすると、Match & Index を使用して出席者の名前を表示します。列 C と列 F に興味があります。
列 C と F に条件付き書式「一意」を使用すると、列 C に表示される名前が列 F のスケジュール リストに表示されないため、ウォークインを識別できます。
マクロを使用するのではなく、ウォークイン (重複していない値) を「ウォークイン」という名前の別の列にプルアップする数式を見つけたいと考えています。
この場合、一度だけ表示される値を探しているため、高度なフィルターと「一意」の数式は機能しません。なぜでしょうか。「John」が列 C と F の両方に表示される場合、高度なフィルターと一意の数式は単一の「John」を一意の値として記録するためです。しかし、その点に関して私が関心があるのは、両方の列に表示される John ではなく、列 C には表示されるが列 F には表示されない Paul です。
つまり、一意の値ではなく、「重複していない値または単一の値」を識別する必要があります。
よろしくお願いします。
皆さんのほとんどは私が求めているものを理解していると思いますが、誤解を避けるために例を挙げました。実際には、同じワークブックの別のワークシートの列にウォークインを手動で記録します。
答え1
Office 365 Excel をお持ちの場合は、次の方法でウォークイン リストを生成できます。
=LET(x,1/ISNA(MATCH(Attendees,Scheduled,0))*ROW(Attendees),y,AGGREGATE(15,6,x,SEQUENCE(COUNT(x)))-1,INDEX(Attendees,y))
Attendees
Scheduled
明らかな範囲を参照してください。
以前のバージョンをお持ちの場合は、より複雑な数式が機能しますが、使用している Excel のバージョンを知っておくと役立ちます。
一つの可能性としては、
=INDEX(Attendees,AGGREGATE(15,6,1/ISNA(MATCH(Attendees,Scheduled,0))*ROW(Attendees)-1,ROW(INDEX($A:$A,1):INDEX($A:$A,COUNT(1/ISNA(MATCH(Attendees,Scheduled,0))*ROW(Attendees))))))
それを「確認」する必要があるかどうかは配列数式ctrl+を押しshiftながら を押しますenter。これを正しく実行すると、Excel は{...}
数式バーに表示されているように数式を中括弧で囲みます。
両方の数式において、 の-1
( のように)は、関数AGGREGATE(...)-1
を使用できるように定義された範囲のヘッダー行を調整することに注意してくださいINDEX
。INDEX
関数は配列内の位置を参照し、 はROW
位置の絶対行番号を参照します。 範囲が 以外で始まる場合はRow 1
、それに応じてその係数を調整します。
答え2
あなたの説明を読んで、私はこのデータを作成しました:
ポールは歩いて入っていき、他の人たちは出席予定を立てました。(列はA
重要ではありません。)
私は思う最も簡単な方法はMATCH
たとえば、D2
次のようなものを使用できます。
=IFERROR(IF(MATCH(C2,F:F,0),"scheduled"),"WALK IN")
別のアプローチとしては、条件付き書式列の式C
:
=AND(NOT(IFERROR(MATCH(C1,F:F,0),0)),C1<>"", C1<>"attendees")
あなたが主張するように、これは一意の値を含む別の列の数式(この場合はポールのみ)。
これは配列数式です(配列数式は次のように入力しますCtrl+Shift+Enter通常の Enter キーの代わりに)。
配列数式は Excel テーブル オブジェクトでは機能せず、列全体ではなく特定の範囲を指定した場合に最も効果的に機能します (実際には 100 万行の列全体のすべてのセルに対して計算を実行するため)。したがって、特定の範囲が望ましいため、このような数式のメンテナンスは面倒です。
この数式が機能するには、追加の列も必要です。つまり、上記の最初の選択肢で説明した「ウォークイン」列です。したがって、この選択肢を選択した場合は、合計で 2 つの列が追加されます。
それでも実行したい場合は、次の式を使用します。
=IFERROR(
INDEX(
$C$2:$C$5,
SMALL(
IF(
$D$2:$D$5<>"WALK IN",
"",
ROW($D$2:$D$5)-MIN(ROW($D$2:$D$5))+1),
ROW(D2)-1)),
"")