• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL表の手入力を関数で自動化したい)

EXCELでの手入力自動化の新たな挑戦

このQ&Aのポイント
  • 仕事での理化学分析において、EXCEL表を使った在庫管理の手入力を自動化したいと考えています。
  • 具体的には、サンプルの払い出しの関数について質問があり、特に2回目の分析日と使用量に関する改善策を求めています。
  • また、日付を年、月、日で分ける方法や、同じサンプルが複数ある場合の払い出しルールについてもアドバイスを求めています。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.22

位置が変わるのでしたら以下の方法でいけると思います。 今回の例にした表のシートをコピペ(全く同じシートを作成する)したシートで行や列の挿入で位置合わせをして 元のL3の式の IDIRECT("$B" & $T3+1) の$B INDIRECT("$F" & $T3+1) の$F が変化していないと思いますからそれを元のB列とF列を見てその項目の列に変更してください。 あと COLUMN(A1)) のA1が変化していると思いますからそれはA1に戻して右と下にコピーしてください。 あと行を挿入した場合 元のS3の式で 後の方のIFERROR(MATCH(R3,$R$1:R2,0),"")) の$R$1の$1が変化していると思いますからそれを$1に戻して下にコピーして下さい。 表の間に行や列を挿入した場合も上記が変化していたら変更してください。 それで正しい結果が出たらその式を本来の表にコピペしてください。セルをコピペではなく式そのものをコピペです。

mocha50
質問者

お礼

kkkkkm様、すべて解決しました。諦めずに最後まで検討していただき、本当にありがとうございました🙇また、こちらでお世話になること多々あると思います。また、ご教授いただければ幸いです。本当にありがとうございました😊

Powered by GRATICA
すると、全ての回答が全文表示されます。

その他の回答 (21)

  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.11

> ちなみに3個の場合、L~Nも関数では難しいでしょうか? K列もS列を参照しているので変更する必要があります、2個だとS列に取り出している比較する対象の行番号で比較できますが、3個だと現状では無理でその方法はわかりません。同一サンプルで最後に出てくるサンプル以外はK列が100になるという事でしたらどうにかなりそうですが最小の値以外が100となるのでしたら関数での対応はちょっと浮かびません。 マクロでの対応はできますが 実行した後、手入力した時の「元に戻す」と同じようなことはできませんから自動では元に戻せません。 マクロのコードは示せますが、マクロの登録の方法などはご自身で調べてください。 3個の場合E列が最小の値以外の行はK列が100(G列と同じ)でいいのでしょうか。

mocha50
質問者

補足

3個の場合E列が最小の値以外の行はK列が100(G列と同じ)になります。 同一サンプルで最後に出てくるサンプル以外はK列が100になるという事でしたらどうにかなりそうです。 ⇒順番をどうにかできないか会社で検討してみます。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.10

2個より多い(3個とか)のでしたら対応していませんので、表示は正しくなりません。関数では分かりませんのでマクロになります。 関数がよろしければ新たに質問し直してください。

mocha50
質問者

補足

いろいろとお手数をおかけして、大変申し訳ありません。質問が不十分でした。多くても3個までなのですが、ちなみに3個の場合、L~Nも関数では難しいでしょうか? また、関数、マクロこだわりはありません。自動化できればと思っております。恐れ入りますが、マクロでしたら方法がありますでしょうか?

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.9

> 添付の表でしたら、イチゴの払い出しの日付が微妙にずれているようです。 どこがずれているのか教えてもらわないとわからないです

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.8

同じサンプルは2個まで 2個が連続していなくてもいいパターンです Noは大小は前後している可能性があり大きいほうのK列をG列と同じにする R3に =$B3&$C3&$D3&$F3 S3に =IFERROR(VALUE(IFERROR(MATCH(R3,$R$1:R2,0),"")&IFERROR(MATCH(R3,R4:R1000,0)+ROW(R3),"")),"") として下にコピーします。 R列S列は作業列ですので、どこにあってもいいですが変更した場合以下の数式のRとSは書き替えてください。 K3に =IF(G3="","",IF(S3<>"",IF(E3>INDIRECT("E" & S3),G3,G3-40),G3-40)) として下にコピーしてください。 L3に =IF($K3=$G3,"",IFERROR(IF($S3<>"",IF(AND(INDIRECT("$P" & $S3)=0, $S3>ROW()),INDEX(INDIRECT("$B" & $S3+1):$F$1000,MATCH($F3,INDIRECT("$F" & $S3+1):$F$1000,0),COLUMN(A1)),INDEX($B4:$F$1000,MATCH($F3,$F4:$F$1000,0),COLUMN(A1))),INDEX($B4:$F$1000,MATCH($F3,$F4:$F$1000,0),COLUMN(A1))),"")) として右と下にコピーしてください。

mocha50
質問者

補足

表まで作成頂いて、ありがとうございます。 お手数をおかけします。 L3に教えて頂いた関数を下にコピーすると、同じ日に2個以上受け入れがあるサンプルが、正しい値を示さないようです。添付の表でしたら、イチゴの払い出しの日付が微妙にずれているようです。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.7

「2個以上はあるかどうか」は間違いで「2個を超えてあるかどうか」でした。 時間がなかったので焦ってました。 とりあえず 同じサンプルは2個まで 必ずその2個は連続している Noは大小は前後している可能性があり大きいほうのK列をG列と同じにする といったパターンでしたら K3を以下に変更してみてください。 =IF(G3="","",IF(AND(B3&C3&D3&F3=B2&C2&D2&F2,E3>E2),G3,IF(AND(B3&C3&D3&F3=B4&C4&D4&F4,E3>E4),G3,G3-40)))

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.6

> L3は、EXCEL表2のL18のことでしょうか? 回答No.4で「はい」と回答しましたが 2021_ 10_ 14_ 1_ オレンジの行です。L17です。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.5

あと、連続して入力されているかどうかはどうなのでしょうか

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.4

> 同じサンプルは同じ日に2個までで、Noの大きいものは必ず下にあるというわ > わけでなく、1、3,2と入力することもあります。 これは2個以上あるという事でしょうか。 > L3は、EXCEL表2のL18のことでしょうか? はい。画像は説明用に下に表を作成していて本来は元の位置(上の表の位置)にあると思ったので、上の表の位置に下の表があると考えての数式になっています。

mocha50
質問者

補足

すみません、サンプルは2個以上で、連続でないときもあります。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.3

回答No.1の追加です。 K3はG3に何も入力されていないと-40になるので以下がいいかもしれません。 =IF(G3="","",IF(B3&C3&D3&F3=B2&C2&D2&F2,G3,G3-40))

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1745/2621)
回答No.2

回答No.1の訂正です 同じサンプルは同じ日に2個までで は 同じサンプルは同じ日に2個まででかつ連続で入力されている です

mocha50
質問者

補足

L3に =IF($K3=$G3,"",IFERROR(IF(AND($B3&$C3&$D3&$F3=$B4&$C4&$D4&$F4,$P4=0),INDEX($B5:$F$1000,MATCH($F3,$F5:$F$1000,0),COLUMN(A1)),INDEX($B4:$F$1000,MATCH($F3,$F4:$F$1000,0),COLUMN(A1))),"")) について、L3は、EXCEL表2のL18のことでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A