列で特定の項目が最後に入力されているセルを調べる方法

このQ&Aのポイント
  • 特定の項目が最後に入力されているセルを調べる方法について知りたいです。
  • 例えば、表の中で特定の項目の最後に入力されたセルを見つける方法を教えてください。
  • 特定の項目の直近で最後に入力されたセルを取得する方法を教えてください。
回答を見る
  • ベストアンサー

1つの列で特定の項目が最後に入力されているセル調べ

こんにちは。 以下のような表を作っていますが、該当する関数がよくわかりません。       A        B          C  仕入れた商品名  仕入日 前回仕入れた日から何日後か? 1 たこ         1/1      ”初回仕入” 2 いか         1/5      ”初回仕入” 3 まぐろ        1/10      ”初回仕入” 4 いか         1/11      ”6日” 5 はまち        1/12      ”初回仕入” 上記のような表を作りたいと思っています。 「今回の「いか」仕入日は前回の「いか」の仕入日から何日経っているか?」を 計算させたいと思っています。例では、求めた結果、「6日後」という値が出ます。 基本的な式は、「前回の仕入日」から「今回の仕入日」を引けばいいと思うのですが、 「いか」の前回仕入れた日を知るために、直近で最後に「いか」が入力されている行(A列内)を 知りたいのです。 どのような関数を使えば知ることができるでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

1行目はタイトル行として C2に =IF(COUNTIF($A$1:A2,A2)=1,"初回",B2-MAX(IF($A$1:A1=A2,$B$1:B1))) と記入し,コントロールキーとシフトキーを押しながらEnterで入力,下向けにコピーします さらにC列を選んで右クリックしてセルの書式設定の表示形式のユーザー定義を選び 0日;;;@ と設定しておきます。 #参考 「(エクセル上での)直近」と「最後の日」は,日付が「順不同ではない場合」には一致しません。 実際のデータを見て,必然的に「日付の昇順」でデータが蓄積されるといった何か暗黙の前提があるなら,問題ありません。 でももしかすると日付順がてれんこになる可能性もあるといった場合は,「一番近くに記入されたデータ」と比較するのか,それとも「至近の日付」で計算をしたいのか,考える必要が出てきます。

KUNISAN2
質問者

お礼

回答ありがとうございます! そのままコピペしたところ無事に条件通り動きました。 構文もシンプルでわかりやすいですね。 参考の件ですが、入力が「てれんこ」になる可能性もなくは ないですが、日付はシリアルデータが入っており、それを基準に、 今回は「直近」を考えているので、ご提案いただいた式で問題 ないと思います。 (「直近」を「上に入力された行で一番近い行」とは考えていません)

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

#2です。xl2000と2003では動きましたので、#VALUEとなった原因は分かりかねます。 やっている事は、#3の方とほぼ同じです。COUNTIFの対象範囲がちょっと知恵が足りなかったので、C1に適用できなくなっていますが。 *の解説をいたします。(SUMPRODUCT関数などで良く使われる表現です) 4行目の「いか」に相当するC4に、{=IF(COUNTIF($A$1:A3,A4)=0,"初回仕入",(B4-MAX(($A$1:A3=A4)*($B$1:B3)))&"日")}という式が入れてあるとき、 {($A$1:A3=A4)}は、「いか」に等しいときだけTRUEとなる、配列{FALSE;TRUE;FALSE}を与えます。(数式バーに上記式を表示した状態で、($A$1:A3=A4)の部分を選択して、f9を押すと確認できます。これは演算する場合{0;1;0}と等価です。 一方、{($B$1:B3)}は、{40909;40913;40918}を与えます。 これらをかけ算すると、0を掛けたものはどんな数でも0になりますので、{0;40913;0}となります。 MAX関数で最大値を取り出すと、「いか」に該当する日付の最大値=直近の日が得られる事になります。 ご参考まで。

KUNISAN2
質問者

お礼

大変丁寧にフォロー頂きありがとうございます。 「*」の意味が分かりました。 ここまで、深い?複雑?なことをやったことが なかったので勉強になってます。 今後の表つくりの参考にしたいと思います。 ありがとうございました。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

関数は得意分野ではありませんが、面白そうなのでやってみました。 #1同様配列数式です。前提も同様ですが、ご質問の文ではデータがA1から始まっていると読めますので、それに沿っています。 C2セルに、 {=IF(COUNTIF($A$1:A1,A2)=0,"初回仕入",(B2-MAX(($A$1:A1=A2)*($B$1:B1)))&"日")} と入れて、下方にドラッグします。 ただし、{ }はCtrl+Shift+Enterで入力すると、自動で付きますので入力不要です。 C1セルには決め打ちで"初回仕入"といれておいて下さい(^^;) なお、最初ご質問の通り、直近の入力行を求めて、INDEXで日付を取り出すのもやってみましたが、日付がシリアル値である事を利用するとその必要もないのでした。 {=IF(MAX(($A$1:A1=A2)*ROW($A$1:A1))=0,"初回仕入",(B2-INDEX($A$1:B1,MAX(($A$1:A1=A2)*ROW($A$1:A1))-0,2))&"日")}

KUNISAN2
質問者

補足

回答ありがとうございます! #1の方に比較して、後段がすっきりしていますね。 実際にセルに入力して、動作確認したのですが、 6行目(項目名の行含む)の「いか」のところに、 上記の数式を入れてみたのですが、「#VALUE!」という エラーメッセージが出てしまいました・・・(本来なら「6日」がでるセル) 確認はしてみたのですが、配列数式として入力されているようですし、 特に問題はないと思うのですが。 なぜでしょうか。 あと調べて少し不明だったのでですが、 >MAX(($A$1:A1=A2)*($B$1:B1)) ↑の「*」は何の処理を意味しているのでしょうか。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 B列にはシリアル値が入っているとします。 C2セルに =IF(COUNTBLANK(A2:B2),"",IF(COUNTIF($A$2:A2,A2)=1,"初回仕入",MAX(IF($A$2:A2=A2,$B$2:B2))-LARGE(IF($A$2:A2=A2,$B$2:B2),2)&"日")) これは配列数式になってしまいますので、 Shift+Ctrl+Enterキーで確定します。 この画面からコピー&ペーストする場合はC2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーではどうでしょうか?m(_ _)m

KUNISAN2
質問者

お礼

ありがとうございます! この値を求めるには、マクロが必要?なんて思っていたもので、 助かりました。 最後にLARGE関数を使ったのも、わかりやすかったです。 配列数式の確定方法もわかりやすく、ためになりました。 丁寧にありがとうございました!

関連するQ&A

  • エクセル関数に一致不一致について

    条件に一致不一致についてどうしてもできないことがあり、分かる方がいらっしゃいましたが是非 教えてください。 表1       表2 名前   1    名前 いか   1   いか かい   1 かい たこ   1 たこ うに   1 うに まぐろ 1    しじみ しじみ  0 上記二つの表で、表2には「まぐろがありません」※表1名前の行はB、 表2名前の行はDです。 =COUNTIF(B:B,D;D)という式を作りましたが、 しじみは表記にあるのに、不一致とでてしまいます。 本来ならば、まぐろが0と出るはずです。 どのようにすれば、正しく一致不一致が表示できるのでしょうか?

  • 腹痛など

    今週の月曜日くらいから熱が出て、火曜日は下がってたんですが。。。 水曜日からずっと今日まで微熱です。 頭痛もあり3日ほど腹痛があります。 今日は下痢になってしまいました。。。 熱が出る前の日の晩御飯は 食べに行って ・軟骨のから揚げ  ・ささみ?(結構赤めだった) ・お刺身盛り合わせ(マグロ、鯛、たこ、ハマチ) ・イカのから揚げ を食べたと思います。 明日くらいに病院へ行こうと思います

  • VLOOKUPで次の値を返す方法?

    EXCELについて質問です。 こんな表があったとします。  A   B   C 1いか  焼   1 2たこ  生   1 3かに  茹   1 4いか  刺身  2 5いか  蒸   5 6たこ  揚   3 ・ ・ ・ 53いか 酒蒸  1 (Bはその都度変化し、基本的に同じものは現れません。) ここから、 ■いか ・焼 1 ・生 2 ・蒸 5  ・  ・  ・ ・酒蒸 1 ■たこ ・生 1 ・揚 3  ・  ・  ・ ■かに ・茹 1  ・  ・  ・ といった具合に値を返す方法はないでしょうか。 VLOOKUP関数を使うと、一番若い行の値を返してきますので、 2番目以降の値を返すことができません。 わかる方、おられましたらご教示の程宜しくお願いいたします。

  • 1つのセルにある数字行を分割して列に組み込みたい。

    以下の表があります。 A1の行に 1.145,0002.  3.13,500 セル分割されておらず、1行に入っています。 これを A1 1.145,000 A2 2. A3 3.13,500 このように分割できる関数はないでしょうか? 数字は6桁、5桁、空白の時もあります。 A1,A2,A3をコピペして、他ファイルに貼り付けている 関係上、関数をかまして自動でできるようにしたいです。 ご回答、よろしくお願いします。

  • エクセル2003 こんなことってできますか?

     商品別で仕入日順に・仕入先・仕入数量・仕入単価を記入する表を作りました。  この表のデータを基に仕入先別の表を作りたいと思っています。  商品別の表は、A列のセルを5個ずつ連結し商品名を記入し、B列以降は仕入日・仕入先・仕入数量・仕入単価・仕入合計額を記入していくように作りました。  A1~A5を連結 商品名を記入 (A6以降も5個ずつ連結)  B列以降   1行目 日付   (直接入力)   2行目 仕入先名 (直接入力)   3行目 仕入数量 (直接入力)   4行目 仕入単価 (直接入力)   5行目 仕入合計額(=B3*B4)  上記の表に対して、仕入先別(A商店・B商店・・・)の表をそれぞれ作り、商品別の表の仕入先名に入力されたときに該当する仕入先別の表へ商品名や日付金額が自動でコピーされるようにしたいのです。 仕入先別の表は形も決めてないのですが、商品別のほうはすでに完成しています。 このような状況で使える関数とかその他の方法ってあるのでしょうか? もし、できない場合はここを変えればできるかもみたいな助言でも結構です。 よろしくお願いします。

  • 仕入帳をエクセルのマクロを使って、作ろうとしています。

    仕入帳をエクセルのマクロを使って、作ろうとしています。 その前の段階で、困ってしまいました。 sheet1の、A1からA6まで、仕入日、整理番号、商品名、シリアル番号、価格、仕入先を入れると、 sheet2の仕入明細表に、それらのデータが、既にインプットされている最終行の1行下に書かれるようにするには、エクセルでは、どの様な関数で、できるかを教えていただけるようお願いします。

  • EXCEL 2つの決まった文字列の間を自動的に範囲選択

    下のような表があるとします。   A  B  C  D  E  F 1 いか 2 たこ ・  ・ ・ 8 たい 9 ひらめ この中からA行にある”たこ”(A2)という文字列を検索して、そこから”たい”(A8)という文字列のある右5行のF行まで(A2:F8)を自動的に範囲選択するような、決まった行にある決まった2つの文字列の間+決まった行までを範囲選択するマクロを作りたいのですが上手く行きません。 何卒、お知恵をお貸し下さい。

  • Excelでセルに「小計」と入力したら自動に計算してくれる関数

    行タイトルが品名、数量、金額の表で、品名の列に途中で「小計」と入力すると、金額の列に数字が表示されるようにしたいです。 行が長くなり、「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんな関数を使えばいいのかわかりません。(マクロを組むようになるのでしょうか) どうぞ、よろしくお願いいたします。

  • エクセルでカウントした数を特定のセルに入力したい

    エクセルの関数について質問させてください。 A列  B列   C列 8/9       リンゴ 8/10      ミカン 8/11      リンゴ 8/12      ブドウ 8/13      ミカン 8/14      リンゴ 8/15      ブドウ 上記のような表で、C列でカウントしたリンゴの数を 前日の日付の行の、B列に入力したいのです。 ※今が8/10だとすると、リンゴの数「3」を  8/9の行のB列の欄に入力したい。 COUNTやCOUNTIFSで色々試してみたのですが、 どうしてもうまくいきません。 どうぞ宜しくお願いします。

  • 列に指定文字が合えば合計値を入力

    Excel2013使用で簡略に作成したのですが集計表の文字Aの1、セルC15にリスト表Aの○合計個数2を入力したい、集計表文字A、B、Cそれぞれの行にリスト表○文字合計数を入力したいのですがセルに入れる関数をお解りの方宜しくお願いします。

専門家に質問してみよう