- ベストアンサー
指定の文字列が入った二つのセル間のセル数を数える
エクセル2007の関数またはマクロに関する質問です。 行(row)1に日付、 行2に、その日の活動(受注、検品、梱包、発送、到着予定日、到着日)を記入し、 受注日と到着日の日数を自動で計算する関数を作るのは可能でしょうか? マクロなら出来ると思いますが、以下の理由から、関数で実現させたいです。 1.編修、応用をしたく、関数ならできそうだけど、マクロにはそこまで詳しくない 2.リアルタイムで結果を表示したい 3.自分以外の人でもわかるようにしたい 不可能なら、ヒントをいただければマクロでがんばります・・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
行 1 、行 2 と分けるのもいいですが、添付図のような配置でデータを蓄積していく方法もご紹介。 添付図みたいに、フィルタあるいはオートフィルタを併用するのもお勧めです。後で必要なデータのみをあいまい検索などで抽出したりするのも簡単です。 J3 =if(h3="","-",h3-$A3) J3 セルをコピーし、J3:K7 のセル範囲に貼り付けあるいはオートフィル。 日付のシリアル値は自然数の数列なので、単に引き算するだけで、経過した日数になりますね。だから「セル数を」数えようとする必要はありません。No.1さんの数式も同様に、引き算をされていますね。 「2012/12/14」とか「12/14」とタイプすれば、シリアル値に勝手に変換されてセルに入力されていて、そのデータはセルの書式によって、年月日とか月日の形式に見せることができます。添付図の日付は全て、見かけは月日のみですが、データの実態は年月日を表すシリアル値である整数です。 なお基本的な計算ということで、あえてマクロを持ち出す必要は特にないですね。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>二つのセル間のセル数を数える 1行目の「日付」が漏れなく毎日分記入されていて、「セル数」がそのまま「日数」になっていると言いたかったのでしょうか。 でしたらわざわざ1行目の日付とか持ってこなくても、確かにセル数だけ数えれば十分ですね。 =IF(AND(COUNTIF(B2:Z2,{"受注","到着日"})),MATCH("到着日",B2:Z2,0)-MATCH("受注",B2:Z2,0),"")
- keithin
- ベストアンサー率66% (5278/7941)
「受注」と「到着日」があったら、それぞれの日付を引き算します。 =IF(COUNTIF(B2:Z2,"受注")*COUNTIF(B2:Z2,"到着日"),INDEX(B$1:Z$1,MATCH("到着日",B2:Z2,0))-INDEX(B$1:Z$1,MATCH("受注",B2:Z2,0)),"") 数式のセルには標準の書式を必ず付けておきます。 言わずもがなですが1行目の「日付」は、2012/12/14などのようにキチンと記入されているのが前提です。