Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : Excel 2019)
直近n日間の売上と過去n日間の売上が一致した場合に抽出
投稿日時: 23/01/11 22:39:17
投稿者: モグポン

こんばんは。
ネット検索してもどう検索して良いのかすらわからず
困っていたところこちらにたどり着きました。
 
エクセル初心者のためVBAなどはわからないので、
数式で教えて頂けたらと助かります。
 
直近n日間の売上を過去数年間にわたって検索して
直近n日間の売上と過去n日間の売上が一致した場合、
過去n日間の最終日翌日の売上を抽出したいと考えています。
 
  A   B
08 4/1  2000円
09 4/2  2000円 B52と一致
10 4/3  3000円 B53と一致
11 4/4  1000円 B54と一致
12 4/5  5000円 B55と一致
13 4/6  2000円 B56と一致
14 4/7  4000円 B57と一致
15 4/8  2000円←この行の日付をC57に、売上をD57に抽出したい
16 4/9  3000円
17 4/10 1000円


52 6/1  2000円
53 6/2  3000円
54 6/3  1000円
55 6/4  5000円
56 6/5  2000円
57 6/6  4000円  
 
 
どなたかご教授お願いします。     
引用付きで返信

回答
投稿日時: 23/01/11 23:08:40
投稿者: WinArrow
投稿者のウェブサイトに移動

対象となるデータが、全件、どういうシート上にあると仮定して、
>直近n日間
のnはどこにあるのでしょうか?
また、過去のnにとは、どの時点からn日ですか?
開始時点はどこにあるのですか?
 
年をまたぐことからA列は、年が表示されていないが、
日付形式ですか?
日付形式でないと成立しないと思います。
 
それから、n日間と説明しているのに、
例示は、日単になってる・・・・違和感が感じられます。
 
 

投稿日時: 23/01/11 23:51:07
投稿者: モグポン

早速のコメントありがとうございます。
すみません色々と説明不足だったようでした。
 
>対象となるデータが、全件、どういうシート上にあると仮定して、
>直近n日間のnはどこにあるのでしょうか?
 
可能であればですが、
C列の最上段に1セルを使い、
1週間分を調べたいと思った時は7、10日分なら10という数値を入力したいです。
数値を入力するだけで色んなパターンのn日間を決められるようにしたいと思っています。
 
 
>また、過去のnにとは、どの時点からn日ですか?
>開始時点はどこにあるのですか?
 
起点は直近の最新日にしたいです。
最新日から過去n日間にさかのぼって調べたいと思います。
質問で言えば「57 6/6  4000円」が最新日になり、
最新日から過去6日間の売上が検索値となります。
 
 
>年をまたぐことからA列は、年が表示されていないが、
>日付形式ですか?>日付形式でないと成立しないと思います。
 
はい、日付形式です。
質問時には省略してしまいましたが
実際には2022/6/6という表記になります。
 
 
>それから、n日間と説明しているのに、
>例示は、日単になってる・・・・違和感が感じられます。
 
すみません、私の理解不足でこのご質問の意図がよくわかりませんでした。
可能であれば詳しくお聞かせ願えると助かります。

回答
投稿日時: 23/01/12 11:02:42
投稿者: んなっと

希望通りではないと思いますが...
 
●E列に作業列を作る方法
 
    A  B  C  D  E
 8  4/1  9       
 9  4/2  9       
10  4/3  8      10
11  4/4  7      10
12  4/5 11      10
13  4/6  9      10
14  4/7  6      7
15  4/8 10      10
16  4/9  9      10
17 4/10  8      10
18 4/11 10      10
19 4/12  7      10
20 4/13  5      10
21 4/14 12      10
22 4/15  6      9
・・・・・・・・・・・・
49 5/12  9      10
50 5/13  6      8
51 5/14 10      10
52 5/15  5      10
53 5/16  8      10
54 5/17 10      10
55 5/18 11      10
56 5/19  9      10
57 5/20  6 5/3 12  
 
E8
=IF(B8="","",IFERROR(MATCH(1,0/(OFFSET(B8,-9,,10)<>OFFSET(INDEX(B:B,MATCH(10^9,B:B)),-9,,10))),""))
下方向・↓
C57
=IF(AND($B58="",$E56<>""),INDEX(A:A,MATCH(MIN($E:$E),$E:$E,0)+1),"")
ひとつ右・→下方向・↓
 
 
●最新のExcelまたはExcel Onlineなら再帰処理を使って
 
C57
=LET(a,A$8:B56,F,LAMBDA(F,x,y,i,IF(ROW(y)=7,i,IF(x=y,F(F,OFFSET(x,-1,),OFFSET(y,-1,),i+1),i))),c,BYROW(DROP(a,,1),LAMBDA(r,F(F,B57,r,0))),IF(MAX(c)<=1,"",INDEX(a,MATCH(MAX(c),c,0)+1,)))
 
(こちらは上下方向にコピー可能)

投稿日時: 23/01/12 11:52:39
投稿者: モグポン

ありがとうございます。
しかし初心者すぎて私の方の理解がまだ追いついていないです。
 
ABCDE列をすべてまったく同じ状態にして
数式を張り付けてもCDE列に何も表示されず空白の状態になってしまいました。
 
これ以上はお手間を取らせることになりますので、
私自身、一度しっかり勉強しなおして
せめて皆様のご回答の意図がわかるくらいになるまでにはエクセルの知識を身に着けてから
改めて問題に向き合ってみたいと思います。
 
わざわざご親切に教えて頂いたのに申し訳ありません。
ありがとうございました。