• ベストアンサー

EXCEL表の手入力を関数で自動化したい

私は仕事で、毎日、10個ほどのサンプル(1個100g)について、理化学分析と味の評価をおこなっています。受け入れた日に全部使用するわけではなく、最初に60g使用し、残りの40gは次回の比較に使用します。それを、EXCEL表で在庫管理しています。日々の手入力を改善したく、分析の払い出しを関数で自動化できないか検討しています。1回目の分析は自動化できましたが、2回目の分析日と使用量の払い出しの関数が、なかなかいい案がでません。いい案がありませんでしょうか?

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.8

回答No.7の補足です。 No.7のH3の式はF11:=B11ということでしたのでF列の日付を取得していますが、将来F11:=B11ではなくなったとかでB列の日付を取得しておいた方が良かったなぁの可能性があるのでしたら以下の式に変更してください。 =IFERROR(INDEX(B4:$D$1000,MATCH(D3,D4:$D$1000,0),1),"")

mocha50
質問者

お礼

出来ました。素晴らしいです。こんなに簡単に、案が出るなんて羨ましい過ぎます。 本当にありがとうございました。助かりました!!

Powered by GRATICA

その他の回答 (7)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.7

> ③D列を「リンゴ」でフィルターかける。その時、前回分と今回分のみが在庫40g残っているので、前回分を11/16の日付で40g払い出し、在庫をゼロにする。なので、最終的にすべてのサンプルは在庫40gとなります。 なるほど、下に同じものがあればそれが2回目の分析日ということでしたか。 H3に =IFERROR(INDEX(D4:$F$1000,MATCH(D3,D4:$D$1000,0),3),"") として下にコピーしてください。とりあえず検索対象は1000行までにしています。 I3に =IF(AND(H3<>"",ISNUMBER(H3)),E3-G3,"") として下にコピーしてください。 J3に =E3-SUM(G3,I3) として下にコピーしてください。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.6

回答No.5で忘れてました 残ですが6行目とかで60とかになっているのが正しいとすれば J3は =IF(I3="",G3,E3-SUM(G3,I3))

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.5

回答No.3とNo.4ですが 分析日は手入力でということでしたら H3に2回目の分析日を入力したらI3に計算結果が表示される H3が未入力もしくは文字などを入力した場合は表示なし I3に =IF(AND(H3<>"",ISNUMBER(H3)),E3-G3,"") J3は =E3-SUM(G3,I3) とか

mocha50
質問者

補足

出来ましたら、分析日も自動で出せたらと思っております。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.4

回答No.3の J3はE3-G3 じゃなくて J3はE3-G3-I3 でしょうか

mocha50
質問者

補足

そのとおりです。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.3

> 1回目の分析は自動化できました どのように自動化したのでしょうか 3行目で見て日付をF3はB3参照してG3は手入力J3はE3-G3くらいしか思いつかないのですが。 2回目の分析日と払い出しの量とはどこを参照すればいいのかわかりません。

mocha50
質問者

補足

申し訳ありません、表が間違っていました。J列の残はすべて40gでした。 1回目の分析量は60g、2回目の分析量は40gと毎回変わりません。なので、いつもの作業は以下になります。 11/16にすること ①日付11/16に、オレンジ、イチゴ、リンゴを100g受け入れる。 ②1回目の分析は、その時に自動で60g払い出す。  リンゴでしたら、F11:=B11、G11:E11-40 ③D列を「リンゴ」でフィルターかける。その時、前回分と今回分のみが在庫40g残っているので、前回分を11/16の日付で40g払い出し、在庫をゼロにする。なので、最終的にすべてのサンプルは在庫40gとなります。 この作業を繰り返しています。なので、フィルターで絞る作業、払い出しの作業が無くなれば業務の効率化になると考えています。 最初はフィルターで絞るのを効率化したいと考えスライサーとか考えたのですが、アイテム数が多く断念しました。また、表の上に入力するだけで、フィルターをかける検索機能があればと思ったのですが、おそらくマクロになると思い、分からず断念した次第です・・・

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.2

Excelはなんでもできる万能など万能では無いと思ってください。 私ならExcelは使いません。 元々システムエンジニアですからExcelでそこまで面倒なことはせず、利用頻度を考えながらデータベースを使い、コードをゴリゴリと記述して作り上げます。 御希望の関数クラスモジュールとして使い回せるようにするので、セルに複雑な関数を記述することもありません。 その替わり入力用の画面を作ったり、必要な宣言を1文字単位で記述する必要があるので知らない人にとっては非常に敷居が高いと思いますが、一度覚えてしまうとExcelでそこまでする気にはならなくなります。 反面、使えるようになるまで時間と手間が必須になってしまいますが・・・

mocha50
質問者

補足

ご回答ありがとうございます。申し訳ありません。内容が難しくて。マクロをくむといことでしょうか?マクロの経験がないので、どう進めればいいでしょうか?

回答No.1

こんばんわ IF関数 特定の条件を満たした場合に値を返します。 例えば、サンプルが最初に使用されてから次に使用するまでの日付が一定期間を超えた場合に2回目の使用日を返すように設定できます LOOKUP関数 一覧から特定のデータを検索し、対応する値を返すことができます。例えば、最初に使用した日から次に使用するべき日を検索するのに使えます DATEDIF関数 2つの日付の差を計算します。 これを使って、最初の分析から一定の日数が経過しているかを判断する基準として使用していきます 具体的な構築には現在の表のデータ構造や必要とする条件など、もう少し詳細な情報が必要なんですが、一例として以下のような形で関数を組み合わせてみました =IF(DATEDIF(最初の使用日, 今日の日付, "days") >= 特定の日数, 今日の日付, "") 次に使用量ですね  最初の使用後に残量が40gになるという点を基に、次のような関数を設定できます。 =IF(最初の使用日からの経過日数が特定の日数を超えている, 40, 0) この関数を各サンプルの行に適用することで、そのサンプルに対する2回目の分析日と使用量を自動で払い出すことができると思います!

mocha50
質問者

補足

早々にご回答ありがとうございます。 情報が足りていませんでした。申し訳ありません。 サンプルについては定期的に分析するものではなく、不定期です。1年に1回分析するものや3日に1回分析するものといろいろで、サンプルの種類も200種を超えます。ですので、11/15新規にリンゴのサンプルを受け入れたら、前回受け入れたサンプルを11/15その日に払い出すようにしたいのです。いわゆる在庫受払表なので、払い出した日付をしっかり記録しなければなりません。すみません、説明下手で。わかりますでしょうか?

関連するQ&A

  • EXCEL表の手入力を関数で自動化したい

    こちらで質問させていただいて、素晴らしい回答頂いたのですが、新たな問題が出てきましたので、再度質問させていただきます。 前回の質問は以下になります。 私は仕事で、毎日、10個ほどのサンプル(1個100g)について、理化学分析と味の評価をおこなっています。使用するサンプルについては、EXCEL表で在庫管理しています。受け入れた日に全部使用するわけではなく、最初に60g使用し、残りの40gは次回の比較に使用します。日々の手入力を改善したく、分析の払い出しを関数で自動化できないか検討しています。1回目の分析は自動化できましたが、2回目の分析日と使用量の払い出しの関数が、なかなかいい案がでません。いい案がありませんでしょうか? 作業の流れは以下になります。※EXCEL表1を参照 ①日付2023年11月16日に、オレンジ、イチゴ、リンゴを100g受け入れる。 ②1回目の分析は、その時に自動で60g払い出す。  リンゴでしたら、F11:=B11、G11:E11-40 ③D列を「リンゴ」でフィルターかける。その時、前回分と今回分のみが在庫40g残っているので、前回分を2023年11月16日の日付で40g払い出し、在庫をゼロにする。なので、最終的にすべてのサンプルは在庫40gとなる。 頂いた回答は、 H3に「=IFERROR(INDEX(B4:$D$1000,MATCH(D3,D4:$D$1000,0),1),"")」 I3に「=IF(AND(H3<>"",ISNUMBER(H3)),E3-G3,"")」 J3に「=E3-SUM(G3,I3)」 でした。 新たな質問というのが、EXCEL表1のH3の日付を、EXCEL表2のように年、月、日で分けるとそれぞれ、H3の関数をどうあてはめればいいかということです。 また、EXCEL表2の11/16のイチゴのように、同じサンプルが2個あった場合は、№の数が大きい方を1回目の分析で全量払い出し、1個だけ在庫を残すようにするためにはどうすればいいでしょうか? EXCEL表2の青枠4つの式を教えていただきたいです。教えていただければ、他の列のセルにもコピーする予定です。よろしくお願いいたします。

  • Excel2010の関数で教えて頂きたいことがあり

    Excel2010の関数で教えて頂きたいことがあります。 貸し出し表を作成しています。 例えばですが、 A1にデフォルトで在庫が「あり」の状態です。 A3とG1の貸出日に入力すると自動的にA1が「なし」を表示する。 A5とJ1の返却確認者が入力すると自動的に「あり」を表示する。 自分で行うとエラーが表示されてしまい困っています。 宜しくお願いします。

  • EXCEL関数について

    在庫管理の表を作成しているのですが、添付の在庫管理表の「主要仕入先」に仕入単価の仕入先が自動で入るようにしたいのですが、使用する関数を教えてください。お願いします。

  • EXCEL関数で数字の正規化を行うには

    購入額アンケートの集計分析をします。サンプルの優劣を分析したいのですが、回答値(購買金額)のばらつきが大きく、そのまでは比較できません。 こうした時は数値の「正規化」(平均値の差の2乗の平均???とか)を行うそうなのですが、  ・EXCEL関数でどのように実行すれば良いのか、やり方もしくは参考情報の所在をお知らせください。 ちなみに現状の構造は下記2列のシンプルなものです  ・サンプルID列、 回答購買額列 

  • エクセルで最後の値を別シートに自動入力したい。

    どなたか詳しい方、ご教授ください。 エクセルで受払簿を作成しようとしています。 各シートを1か月分として作成し、例えば4月の受払簿(シート)が、     A    B    C 1  受入数  払出数  在庫数 2  10         10 3        1     9 4        3     6 5        1     5         ・        ・     ・ ・        ・     ・ 9        1     1 とあったとします。そして最後の在庫数「1」を次の5月のシート の在庫数に自動的に入力できるような関数またはVBAはありませんでしょうか?例えばVBAなら「入力終了」ボタンを押せば、在庫数最後の値が自動的に5月のシートの在庫数の一番上に入力されるような・・・です。 関数もいろいろ考えたのですが、最後の行を認識して取り出す、といったものを思いつくことが出来ませんでした。 皆さん、どうぞよろしくお願いします。

  • Excel2007の関数について

    Excel2007の関数について教えてください。 A     B      C     D いいえ  いいえ 人参 1 はい   いいえ   キャベツ 2 はい   はい    大根    3 1番目にAの欄を入力。 2番目にBの欄を入力。 AとBを入力した時にCとDの項目が上記 表のように自動で反映されるようにしたいと思います。 どのような関数を使用すればいいでしょうか。

  • EXCEL2010で関数が消えてしまう

    EXCEL2010をWindows7で使用しています。 セルに曜日を表示する関数を入力し、月を更新すれば、自動で曜日も更新されるようになっています。 月を更新したときに変わらない曜日があったので、確認してみるとセルに入力されていた関数が消え、値のみが入っていました。別のセルの曜日関数をコピーしたのですが、一度関数を再入力してEnterを押すと、また値のみになり、消えてしまいます。値複写で上書きしたような感じです。 別のセルで試してみても同様の現象が起こりました。 原因として何が考えられるでしょうか。

  • Excel関数で日付の自動入力をしたい場合・・・

    Excelの関数を用いて日付を自動入力できないものかと思いまして お詳しい方にご教授いただければと思うのですが A1 セルに”入力規則”で1月~12月まで選択できるようにしておいて ある月を選択すると A2~A32に自動で日付が入るようにできないでしょうか? 例 A1:4月をプルダウンから選択 A2:4/1 B2:火 (=TEXT(A2,"aaa")を使用してます) 以下31日まで自動入力 宜しくお願いいたします。

  • Excel関数で困っています。

    どなたか、ご教授願います。 下記ような表で、     支払日 1回目 2008/8/15 2回目 2008/9/15 3回目 2008/10/15  : 12回目 2009/7/15 2008/5/21から2009/5/20の間に支払日は何回あるか数えたいのですが。 どのような関数を使えば良いのか、それともVBAを使用して集計するのか、どなたか教えて下さい。

  • EXCEL関数について。

    EXCEL関数について。 下記関数にて、値の取得を行うようにしましたが、 この関数使用時のエラー(#N/A)が 出ないようにする為の数式を教えていただけませでしょうか? 【現在の数式】 =INDEX('01'!$T$8:$W$14,MATCH($C$12,'01'!$S$8:$S$14,0),MATCH($G12,'01'!$T$7:$W$7,0)) この数式の内、最初のMATCH関数  MATCH($C$12,'01'!$S$8:$S$14,0) の中の S8~S14までのセルの間に参照値 C12 の値がない場合に、エラーが出ないように したいのですが、その数式を教えていただけないでしょうか?

専門家に質問してみよう