- 締切済み
シート間のデータのやりとり
当方はエクセル2003 OSはXPです。 シート「記入」とシート「入金記入」の2つのシートがあります。 シート「記入」には A1 月度 B1 日付 C1 ID・・・・・顧客番号管理です D1 売上金額 I1 入金確認 シート「入金記入」には A1 月度 B1 日付 C1 ID・・・・・顧客番号管理です D1 入金金額 というシートの内容です。 ※この場合のご相談ですが 例えば シート「記入」I1のリストから「入金済」を選択したときに シート「入金記入」の B1 日付 「入金済」を選択したを自動的に日付が記入される C1 ID はシート「記入」の番号をそのまま D1 入金金額 はシート「記入」の売上金額をそのまま もしこのことが可能ならご指導いただけるとありがたいのですが。 現在はシート「入金記入」手動で入力しています。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
実は、当方、課題を把握しきれません…。 ------------------------------------------------------ (A) シート「記入」の各行が顧客に対応しており、それぞれ、{月度 日付 ID 売上金額 入金確認} の項目がある。 (B) 顧客ごとに {月度 日付 ID 売上金額} を入力していく。 (C) 入金確認した顧客の {入金確認} を選択したとき、その顧客情報だけシート「入金記入」へ転写。 ------------------------------------------------------ なのでしょうか? (C') 入金未確認のうちは {入金確認} を未入力のままとし、シート「入金記入」へ転写させない。 入金確認した顧客の {入金確認} には何か文字を入力し、その顧客情報をシート「入金記入」へ転写。 …というのなら、シート関数を使えば、入金確認した顧客情報をすべてシート「入金記入」へ転写できますよね。
- pc_knight
- ベストアンサー率66% (52/78)
No2の回答者です。 回答番号:No.2の補足説明にある「次のような警告が出ます。」からは原因確定はちょっと難しいです。。 もしかしたら、「実行時エラー’9’」「インデックスが有効範囲にありません。」という表示が出て、デバッグ(D)を選択すると「rw = Sheets("入金記入").Range("B65536").End(xlUp).Row + 1」の部分が黄色に色塗りされてませんでしょうか。 その場合でしたら、シート名が「入金記入」なるシートが同じブック内に存在しないことが原因と考えられます。シート名のご確認を!! 具体的なエラーメッセージ(含、エラー番号)を示して下さるともっと答えられるかも知れません。
お礼
大変失礼な話かも知りませんが「警告エラーが出て」その説明を忘れましたので下記の者を追加させていただきました。 シート間のデーターのやりとり2 09/01/17 18:06 これに対して回答のご協力をいただいたのがうまくいき解決できました。 この件に関して本当に知識不足の小生にご協力いただき誠に有難うございました。 今後とも少しずつエクセルを成長させてゆく小生を暖かく見守って下さい。 本当に有難うございました。
- pc_knight
- ベストアンサー率66% (52/78)
シート「記入」のシート名タグを右クリック→コードの表示(V)で表示されるコードエリアに以下のコード貼り付けたらで自動的にできます。(意図と違っていたらすみません。) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 Then If Target.Column = 5 And Target.Value = "入金済" Then rw = Sheets("入金記入").Range("B65536").End(xlUp).Row + 1 Sheets("入金記入").Cells(rw, 2).Value = Date Sheets("入金記入").Cells(rw, 3).Value = Target.Offset(0, -2) Sheets("入金記入").Cells(rw, 4).Value = Target.Offset(0, -1) End If End If End Sub 但し、以下の不都合があります。 (1)「入金済」の文字を他のセルからドラッグしてコピーした場合は、シート「入金記入」に記載されない。 (2)一旦、「入金済」にした後、誤りに気づき「入金済」を消しても、シート「入金記入」に載ったデータは自動では消えないので、手動消去をする必要があります。 その不都合を回避するため、シート「記入」のF列に入金日の日付を自動記入されるようにしておき、オートフィルタ機能で「入金済」データのみ抽出しシート「入金記入」へコピーする方法はいかがでしょう。 その場合 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 Then If Target.Column = 5 And Target.Value = "入金済" Then Target.Offset(0, 1).Value = Date End If End If End Sub となります。
お礼
大変失礼な話かも知りませんが「警告エラーが出て」その説明を忘れましたので下記の者を追加させていただきました。 シート間のデーターのやりとり2 09/01/17 18:06 これに対して回答のご協力をいただいたのがうまくいき解決できました。 この件に関して本当に知識不足の小生にご協力いただき誠に有難うございました。 今後とも少しずつエクセルを成長させてゆく小生を暖かく見守って下さい。 本当に有難うございました。
補足
If Target.Count = 1 Then If Target.Column = 5 And Target.Value = "入金済" Then rw = Sheets("入金記入").Range("B65536").End(xlUp).Row + 1 ここのrw = に 次のような警告が出ます。 誠に恐れいりますがご指導いただけませんでしょうか。 宜しく御願いします。 Sheets("入金記入").Cells(rw, 2).Value = Date Sheets("入金記入").Cells(rw, 3).Value = Target.Offset(0, -2) Sheets("入金記入").Cells(rw, 4).Value = Target.Offset(0, -1) End If End If End Sub
シート「記入」での「選択」のアクション時にシート「入金記入」へ書き込むには、VBA が要りそう。 シート「記入」の内容をただ転送するだけなら、例えばシート「入金記入」の B1 に、 =記入!B1 と書いておけばよい。 さて、どちら?
お礼
大変失礼な話かも知りませんが「警告エラーが出て」その説明を忘れましたので下記の者を追加させていただきました。 シート間のデーターのやりとり2 09/01/17 18:06 これに対して回答のご協力をいただいたのがうまくいき解決できました。 この件に関して本当に知識不足の小生にご協力いただき誠に有難うございました。 今後とも少しずつエクセルを成長させてゆく小生を暖かく見守って下さい。 本当に有難うございました。
補足
VBAは全く知識がないためご指導いただけないでしょうか。 切にお願いします。
お礼
大変失礼な話かも知りませんが「警告エラーが出て」その説明を忘れましたので下記の者を追加させていただきました。 シート間のデーターのやりとり2 09/01/17 18:06 これに対して回答のご協力をいただいたのがうまくいき解決できました。 この件に関して本当に知識不足の小生にご協力いただき誠に有難うございました。 今後とも少しずつエクセルを成長させてゆく小生を暖かく見守って下さい。 本当に有難うございました。