- ベストアンサー
EXCEL表の手入力を関数で自動化したい
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
回答No.7の補足です。 No.7のH3の式はF11:=B11ということでしたのでF列の日付を取得していますが、将来F11:=B11ではなくなったとかでB列の日付を取得しておいた方が良かったなぁの可能性があるのでしたら以下の式に変更してください。 =IFERROR(INDEX(B4:$D$1000,MATCH(D3,D4:$D$1000,0),1),"")
その他の回答 (7)
- kkkkkm
- ベストアンサー率66% (1742/2617)
> ③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
- ベストアンサー率66% (1742/2617)
回答No.5で忘れてました 残ですが6行目とかで60とかになっているのが正しいとすれば J3は =IF(I3="",G3,E3-SUM(G3,I3))
- kkkkkm
- ベストアンサー率66% (1742/2617)
回答No.3とNo.4ですが 分析日は手入力でということでしたら H3に2回目の分析日を入力したらI3に計算結果が表示される H3が未入力もしくは文字などを入力した場合は表示なし I3に =IF(AND(H3<>"",ISNUMBER(H3)),E3-G3,"") J3は =E3-SUM(G3,I3) とか
補足
出来ましたら、分析日も自動で出せたらと思っております。
- kkkkkm
- ベストアンサー率66% (1742/2617)
回答No.3の J3はE3-G3 じゃなくて J3はE3-G3-I3 でしょうか
補足
そのとおりです。
- kkkkkm
- ベストアンサー率66% (1742/2617)
> 1回目の分析は自動化できました どのように自動化したのでしょうか 3行目で見て日付をF3はB3参照してG3は手入力J3はE3-G3くらいしか思いつかないのですが。 2回目の分析日と払い出しの量とはどこを参照すればいいのかわかりません。
補足
申し訳ありません、表が間違っていました。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/17766)
Excelはなんでもできる万能など万能では無いと思ってください。 私ならExcelは使いません。 元々システムエンジニアですからExcelでそこまで面倒なことはせず、利用頻度を考えながらデータベースを使い、コードをゴリゴリと記述して作り上げます。 御希望の関数クラスモジュールとして使い回せるようにするので、セルに複雑な関数を記述することもありません。 その替わり入力用の画面を作ったり、必要な宣言を1文字単位で記述する必要があるので知らない人にとっては非常に敷居が高いと思いますが、一度覚えてしまうとExcelでそこまでする気にはならなくなります。 反面、使えるようになるまで時間と手間が必須になってしまいますが・・・
補足
ご回答ありがとうございます。申し訳ありません。内容が難しくて。マクロをくむといことでしょうか?マクロの経験がないので、どう進めればいいでしょうか?
- 柊 斗真(@Menhera_camo)
- ベストアンサー率50% (1/2)
こんばんわ IF関数 特定の条件を満たした場合に値を返します。 例えば、サンプルが最初に使用されてから次に使用するまでの日付が一定期間を超えた場合に2回目の使用日を返すように設定できます LOOKUP関数 一覧から特定のデータを検索し、対応する値を返すことができます。例えば、最初に使用した日から次に使用するべき日を検索するのに使えます DATEDIF関数 2つの日付の差を計算します。 これを使って、最初の分析から一定の日数が経過しているかを判断する基準として使用していきます 具体的な構築には現在の表のデータ構造や必要とする条件など、もう少し詳細な情報が必要なんですが、一例として以下のような形で関数を組み合わせてみました =IF(DATEDIF(最初の使用日, 今日の日付, "days") >= 特定の日数, 今日の日付, "") 次に使用量ですね 最初の使用後に残量が40gになるという点を基に、次のような関数を設定できます。 =IF(最初の使用日からの経過日数が特定の日数を超えている, 40, 0) この関数を各サンプルの行に適用することで、そのサンプルに対する2回目の分析日と使用量を自動で払い出すことができると思います!
補足
早々にご回答ありがとうございます。 情報が足りていませんでした。申し訳ありません。 サンプルについては定期的に分析するものではなく、不定期です。1年に1回分析するものや3日に1回分析するものといろいろで、サンプルの種類も200種を超えます。ですので、11/15新規にリンゴのサンプルを受け入れたら、前回受け入れたサンプルを11/15その日に払い出すようにしたいのです。いわゆる在庫受払表なので、払い出した日付をしっかり記録しなければなりません。すみません、説明下手で。わかりますでしょうか?
お礼