- ベストアンサー
2つの内容と日付が交差するセルに値を加算したい
- エクセルで受注登録をする際、取引先名と商品名を選択するユーザーフォームがあります。それぞれの値をテキストボックスに表示し、別のテキストボックスに日付と受注数を入力します。登録ボタンを押すと、選択したセルに受注数が加算されます。
- エクセルで受注登録をする際、取引先名と商品名を選択するユーザーフォームがあります。入力された値を表示するテキストボックスがあり、別のテキストボックスに日付と受注数を入力します。登録ボタンを押すと、選択したセルに受注数が加算されます。
- エクセルでの受注登録を容易にするため、取引先名と商品名を選択するユーザーフォームがあります。入力された値をテキストボックスに表示し、日付と受注数を別のテキストボックスに入力します。登録ボタンを押すと、選択したセルに受注数が加算されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロでイチイチと探して加算していくだけです。 private sub CommandButton1_Click() dim r as range dim r0 as string dim c as range ’以下ダラダラとデータチェック if me.textbox1 = "" then msgbox "SELECT LISTBOXES" exit sub end if if me.textbox2 = "" then msgbox "INPUT DATE" exit sub end if if me.textbox3 = "" then msgbox "INPUT NUMBER" exit sub end if set c = worksheets("Sheet1").range("1:1").find(what:=datevalue(me.textbox2), lookin:=xlformulas, lookat:=xlwhole) if c is nothing then msgbox "NOT MATCH IN DATE" exit sub end if set r = worksheets("Sheet1").range("A:A").find(what:=listbox1.value, lookin:=xlvalues, lookat:=xlwhole) if r is nothing then msgbox "NOT MATCH IN A" exit sub end if ’本番 r0 = r.address do if r.offset(0, 1) = me.listbox2.value then with worksheets("Sheet1").cells(r.row, c.column) .value = .value + me.textbox3.value end with exit sub end if set r = worksheets("Sheet1").range("A:A").findnext(r) loop until r.address = r0 msgbox "NOT MATCH IN B" end sub
その他の回答 (1)
- hallo-2007
- ベストアンサー率41% (888/2115)
まず、発想を変えてください。 データを日付(横方向)に伸ばしていくと必ず限界が来ます。 また、横移動もマウス操作が出来ませんよね。 パソコンは、データは縦へ蓄積すると使いやすくなるように 造られています。 それと、データを加算して保持することです。 一度、ミス入力をしてしまうと、どこでミスが起きたかさえ わからなくなります。 一般的な方法 1、ユーザーフォームで取引先・商品名を選択、ボタンを押すと 2、データシートへ下方向にデータが記述されていく 3、必要に応じて、決まっているフォーマットの書式に表示されるような 関数などを考える。 1、の際の日付も毎日、当日の業務ができれば、日付の入力も不要になりますよね。 データも常に最新の状態ということです。
お礼
ご回答ありがとうございます! データベースの様に縦に蓄積して関数で抜き出す事も検討&実際に試験してみたのですが・・・ 商品点数が多く、関数を入れると大変重たくなってしまいます。 そこで、なるべく関数を使わず作成しようと思い至りました。 ただ、やはり入力間違い等の検証等にはデータシートが必要となりますので、色々と検討してみたいと思います。
お礼
ご回答ありがとうございます! おかげ様で問題解決にいたりました!!