『重複する日付のある抽出』(gag)
お世話になります。
下記の「台帳」のようにA列に「名前」が並び
1行目に「行先」が決められているとします。
行く日が決まると空白セルに「日付」を入力
している状態が下記の台帳でこれから空白が
埋まっていくものとします。
やりたいことは、「日付」が入力されると
「抽出結果」の様に「日付」でソートされて
名前と行先が並ぶようにしたいです。
※日付は重複するときがあります。
よろしくご教授ください。
台帳
| A | B | C | D | E |
1 | | 高知 | 愛媛 | 香川 | 徳島 |
2 | 佐藤 | 7/1 | | | 7/2 |
3 | 鈴木 | | 7/10 | | |
4 | 高橋 | | 7/2 | | 7/4 |
5 | 田中 | | 7/3 | 7/4 | |
抽出結果
7/1 佐藤 高知
7/2 佐藤 徳島
7/2 高橋 愛媛
7/3 田中 愛媛
7/4 高橋 徳島
7/4 田中 香川
7/10 鈴木 愛媛
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
=LAMBDA(見出し1,見出し2,値,LET( 日付,TOCOL(値,1), 名前,TOCOL(IF(値<>"",見出し1,NA()),3), 行先,TOCOL(IF(値<>"",見出し2,NA()),3), 結合,HSTACK(日付,名前,行先), SORT(結合,1,1) ))(A2:A5,B1:E1,B2:E5) (d-q-t-p) 2025/06/24(火) 14:21:30
A2:A5 ←名前が入力されている範囲(例なら佐藤〜田中まで)
B1:E1 ←行先が入力されている範囲(例なら高知〜徳島まで)
B2:E5 ←日付を入力する予定の範囲
上記部分を実際の表の、それぞれ対応する範囲に変更するだけの様に思いますが・・・
実際の表はレイアウトが違うということでしょうか?
それならそれで、実際のレイアウトを挙げた方が良いのではないでしょうか?
(コメ) 2025/06/24(火) 19:18:15
=LAMBDA(見出し1,見出し2,値, LET( 日付,TOCOL(値,1), 名前,TOCOL(IF(値<>"",見出し1,NA()),3), 行先,TOCOL(IF(値<>"",見出し2,NA()),3), 結合,HSTACK(日付,名前,行先), SORT(結合,1,1) ) )(A2:A5,B1:E1,B2:E5) という式を説明します。
■ LAMBDA(見出し1,見出し2,値, は関数を定義するもので、見出し1,見出し2,値の3個の引数(ひきすう)をもとに、 LET( 日付,TOCOL(値,1), (中略) SORT(結合,1,1) ) という結果(配列)を返す関数です。LET関数のなかはあえて説明しません。 ■ そうして定義した関数に、 A2:A5, B1:E1, B2:E5 という実引数(じつひきすう;実際の引数)を与えています。 ■ ですから、応用というのは、最後の行の実際の引数を正確に与えることに尽きます。 コメさんから指摘があったとおりです。
(xyz) 2025/06/24(火) 23:07:30
本来追加のお願いはご法度なのかもですが、利用してみると
不都合がでてしまい何とかならないかと再度ご教授願いたく
宜しくお願いします。
追加したいのは、指定日(基本は「本日」)を入れるセルを
用意してその日を過ぎたものは抽出しない様にしたいのです。
前回教えて頂いた式を元に追加(変更)していただけると
非常にうれしいです。もちろん、別式でも構いません。
よろしくお願いします。
(gag) 2025/07/17(木) 10:28:49
(無視していい) 2025/07/17(木) 10:37:22
(無視していい) 2025/07/17(木) 10:47:51
今頃
>失礼いたしました。
では遅すぎるっちゅーねん!!!
(無視していい) 2025/07/17(木) 10:58:58
LAMBDAで関数化しているので最後にもう一つオプション引数の「本日」を追加しました。
=LAMBDA(見出し1,見出し2,値,[本日],LET( 日付,TOCOL(値,1), 名前,TOCOL(IF(値<>"",見出し1,NA()),3), 行先,TOCOL(IF(値<>"",見出し2,NA()),3), 結合,HSTACK(日付,名前,行先), 抽出,FILTER(結合,日付<>本日), SORT(抽出,1,1) ))(A2:A5,B1:E1,B2:E5,TODAY())
これでどうですか?
(d-q-t-p) 2025/07/18(金) 09:50:30
=LAMBDA(見出し1,見出し2,値,[除外日],LET( 日付,TOCOL(値,1), 名前,TOCOL(IF(値<>"",見出し1,NA()),3), 行先,TOCOL(IF(値<>"",見出し2,NA()),3), 結合,HSTACK(日付,名前,行先), 抽出,FILTER(結合,BYROW(日付<>TOROW(除外日),AND)), SORT(IFERROR(抽出,結合),1,1) ))(A2:A5,B1:E1,B2:E5,G:.G) (d-q-t-p) 2025/07/18(金) 10:03:45
(あかみの) 2025/07/18(金) 10:10:57
質問者に対する批判ならまだしも、回答者であるd-p-t-p さんへの 侮辱と捉えられかねない発言は控えた方がいいかと →あかみのさん (デボラ) 2025/07/18(金) 21:36:22
>指定日(基本は「本日」)を入れるセルを 用意してその日を過ぎたものは抽出しない
とあるので、もしかしたら「日付>本日」とした方が、質問者の希望に沿うのかもしれません。 指定日を任意のセルに入力するとしたら、 d-q-t-pさんが1つ目に提示されている数式のTODAY()を任意のセル番地に変更です。 ※指定日は日付と認識できる形式で。
別の話になりますが、 今回の質問内容の成型なら、数式が思いつかなくても、 PowerQueryを利用するという手もあると思います。 求められていないかもしれませんので、紹介だけ。
列のピボット解除 http://officetanaka.net/excel/function/GetAndTransform/08.htm
セルの値でクエリを変化させる(パラメータクエリの基本) http://officetanaka.net/excel/function/GetAndTransform/32.htm
これらの機能を利用すれば、希望の形に成型できます。 (コメ) 2025/07/19(土) 14:45:07
今回のご回答に関しまして当方の実力の足らなさで
なかなかに応用が出来ず(情けないですが…)
現在も格闘中です。しかし、前回のご回答分も
時間はかかりましたがなんとか利用できる所まで来ましたので
今回分も頑張って理解したいと思います。
PowerQueryの利用もお勧め頂いていますが、年も寄っていまして
新しいことの理解が厳しい状態です。教えて頂いた式を
頑張って利用したいと思います。
今回はわがままに最後まで付き合っていただきありがとうございました。
(gag) 2025/07/24(木) 14:27:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.