
No.3ベストアンサー
- 回答日時:
>B表に、A表で入力した中から、消費期限が一番近い年月日を種類の横に表示させたいと思っています。
A表の消費期限が日付のシリアル値であることを条件とします。
次の数式をお勧めします。
=IF(E4="","",SUMPRODUCT(MIN((B4:B15=E4)*C4:C15+(B4:B15<>E4)*(MAX(C4:C15)+1))))
貼付画像はExcel 2013で検証した結果です。
全てのバージョンで再現できると思います。

ありがとうございます。
B列に種類を入力して、C列に消費期限を入力しない場合、F列に「M33.1.0」と表示されますが、C列に消費期限をまだ入力しない場合、F列に「M33.1.0」とされず、空欄にする方法がありましたら、教えていただければと思います。
よろしくお願いします。
No.10
- 回答日時:
>ちなみに、2番目に短い消費期限を表示させることも可能でしょうか。
可能ですが数式を変更する必要があります。
MIN関数をSMALL関数に置き換えてください。
使い方はヘルプで使用例を見ながら習得されると良いでしょう。
MIN((B$4:B$15=E4)*C$4:C$15+(B$4:B$15<>E4)*(MAX(C$4:C$15)+1))
↓
SMALL((B$4:B$15=E4)*C$4:C$15+(B$4:B$15<>E4)*(MAX(C$4:C$15)+1),2)
但し、該当がないときは登録された最大の日付の翌日になりますので、IF関数の論理式も変更する必要があると思います。
No.9
- 回答日時:
>ちなみに、2番目に短い消費期限を表示させることも可能でしょうか。
この場合も条件によって数式が変わります。
たとえば、同じ種類は必ず2つ以上の消費期限データがあるという条件なら、以下の数式になります。
=SMALL(INDEX(($B$4:$B$100<>E4)*1000000+$C$4:$C$100,),2)
セルの書式設定は、No8の回答と同じように設定してください。
No.8
- 回答日時:
No4の回答の補足です。
No4の回答では数式を提示しませんでしたが、以下のような数式にするほうが計算負荷が少ないかもしれません。
=MIN(INDEX(($B$4:$B$100<>E4)*1000000+$C$4:$C$100,))
このケースの場合、セルの表示形式はユーザー定義で以下のように設定してください。
[>99999]"";[=0]"";[$]ge.m.d;@
今回の結果をどのような目的に使用するのかにもよりますが、単純に消費期限が一番近い年月日を種類ごとに表示したいなら、ピボットテーブルを利用するほうが簡単です。
この場合、種類が追加されても自動的に追加されます(なお関数で対応したい場合は、ふくっ雑な数式になりますが重複のないデータを自動表示することも可能です)。
「挿入」「ピボットテーブル」で行フィールドに種類、Σ値(データフィールド)に賞味期限を配置し、データフィールドの上で右クリックし「値フィールドの設定」で集計の方法を「最小値」にして、表示形式を日付にすればご希望の集計結果が得られます。
この時元データをホームタブの「テーブルとして書式設定」しておけば、データの追加に自動対応してくれます(追加した場合はピボットテーブル上で右クリックから「更新」してください)。
No.7
- 回答日時:
No.5です。
>ちなみに、2番目に短い消費期限を表示させることも可能でしょうか。
というコトですので、もう一度画像をアップしてみます。
複数表示になりますので、列方向(右方向)に順に表示させます。
↓の画像で作業列(D4セル)の数式、F4セルの数式は前回同様です。
結果のG4セルに
=IFERROR(INDEX($C$4:$C$1000,MATCH(SMALL(IF(($B$4:$B$1000=$F4)*($C$4:$C$1000>=TODAY()),$C$4:$C$1000),COLUMN(A1)),$C$4:$C$1000,0)),"")
今回も配列数式ですので、Ctrl+Shift+Enterで確定してください。
これを列・行方向にフィルハンドルでコピーすると
画像のような感じになります。
※ 今回も賞味期限切れ(賞味期限が本日より前のもの)は表示しないようにしています。m(_ _)m

No.6
- 回答日時:
>B列に種類を入力して、C列に消費期限を入力しない場合、F列に「M33.1.0」と表示されますが、C列に消費期限をまだ入力しない場合、F列に「M33.1.0」とされず、空欄にする方法がありましたら、教えていただければと思います。
空欄は数値として 0 として評価されますので日付に直したとき 1900/1/0(M33.1.0) と表示されます。
従って、同じ種類で最小になります。
空欄にするときはIF関数で結果が 0 のとき空欄とするようにすれば良いでしょう。
=IF(SUMPRODUCT(MIN((B4:B15=E4)*C4:C15+(B4:B15<>E4)*(MAX(C4:C15)+1)))=0,"",SUMPRODUCT(MIN((B4:B15=E4)*C4:C15+(B4:B15<>E4)*(MAX(C4:C15)+1))))
ありがとうございます。
大変助かります。
ちなみに、2番目に短い消費期限を表示させることも可能でしょうか。
よろしくお願いします。
No.5
- 回答日時:
こんにちは!
横からお邪魔します。
余計なお世話かもしれませんが、↓の画像のように作業列を設け
F列に「種類」が重複しないように表示させてみました。
尚、質問の画像では「調味期限」が「今日以降」になっていますが、
万一賞味期限切れのものがある場合はそれを表示させないようにしています。
(賞味期限がある商品が一つもない場合はエラーとなります)
列配置が違うので、やり方だけです
↓の画像で作業列D4セルに
=IF(COUNTIF(B$4:B4,B4)=1,ROW(),"")
という数式を入れフィルハンドルで下へしっかりコピーしておきます。
そして、F4セルに
=IFERROR(INDEX(B:B,SMALL(D:D,ROW(A1))),"")
G4セル(セルの表示形式は ge.m.d )に
=IF(F4="","",INDEX(C$4:C$1000,MATCH(MIN(IF((B$4:B$1000=F4)*($C$4:$C$1000>TODAY()),C$4:C$1000)),C$4:C$1000,0)))
このG4セルは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → G4セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
最後にF4・G4セルを範囲指定 → G4セルのフィルハンドルで下へコピー!
これで画像のような感じになります。m(_ _)m

ありがとうございます。
大変助かります。
ちなみに、2番目に短い消費期限を表示させることも可能でしょうか。
よろしくお願いします。
No.4
- 回答日時:
>C列に消費期限をまだ入力しない場合、F列に「M33.1.0」とされず、空欄にする方法がありましたら、教えていただければと思います。
この部分だけなら、セルの書式設定の表示形式をユーザー定義にして、以下のように「;」を2つ挿入してください。
[$-411]ge.m.d;;;@
数式で対応するならTEXT関数を使って以下のようにするのが簡単です。
=TEXT(元の数式,"ge.m.d;;;@")
ただし上記の数式で表示されるデータは文字列ですので、その値を使用して何か処理する場合(例:数式に使用する場合)は少し工夫する必要があります。
No.2
- 回答日時:
前提として消費期限は数値である事(書式設定でH27.1.31となっている)とすれば,消費期限が短い=値が小さい事になります.
数式としては
=MIN(INDEX((B:B<>E4)*10^5+C:C,0))
これを下にオートフィルすればOKです.
過去に同じような質問がありましたので,参考URLを入れておきます.
参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question …
ありがとうございます。
B列に種類を入力して、C列に消費期限を入力しない場合、F列に「M33.1.0」と表示されますが、C列に消費期限をまだ入力しない場合、F列に「M33.1.0」とされず、空欄にする方法がありましたら、教えていただければと思います。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 消費者問題・詐欺 お金を取り返すことは可能でしょうか? 4 2023/01/07 13:17
- スーパー・コンビニ 消費期限の近い物から選んで買っていますか? 8 2023/05/06 11:09
- 食べ物・食材 消費期限 賞味期限 4 2022/08/31 15:29
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- 政治学 あなたが政治家だったら、まず何の改革をしますか? 大雑把に3つぐらいあげてくだされ。 8 2022/07/10 19:41
- Excel(エクセル) エクセルについて 8 2023/02/11 07:36
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- 食べ物・食材 消費期限とも賞味期限とも書かれていないのですが、日付だけ見ると1ヶ月期限が切れているスーパーで購入し 5 2023/04/14 16:56
- その他(料理・グルメ) 賞味期限か消費期限かはわからないんですけど 2022年6月 一年期限が切れたナンプラーを使って作った 2 2023/06/14 20:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルの循環参照、?
-
【関数】同じ関数なのに、エラ...
-
【マクロ】列を折りたたみ非表...
-
【マクロ】【配列】3つのシー...
-
【マクロ】アクティブセルの時...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】EXCELで読込したCSV...
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】A列にある、日付(本...
-
vba テキストボックスとリフト...
-
エクセル
-
【エクセル】期限アラートについて
-
Excel 複数のセルが一致すると...
-
【マクロ】WEBシステムから保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報