- ベストアンサー
シートに入力した内容をマクロ?でリスト化できますか?
- 以前行った質問で、シート2のリストに入力=シート1のフォームに反映(→印刷)というものがありました。しかし、今度は逆に、シート1のフォームを入力=シート2のリストに反映→シート1で『確定』ボタン?を押す=シート2が確定され→シート1で新たな入力→以下繰り返しという事をしたいという依頼が来ました。
- サイトで色々調べた結果、マクロで書式の消去を使うことで解決できるかもしれないと思っていますが、具体的な方法がわかりません。初心者な質問ですが、どのようにすればいいか教えてください。
- 関連するサイトとして、「http://www.sigoto.co.jp/excel/」があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1,No2です。 >A1には、=MATCH(A1,Sheet2!A:A) 先ほどの、関数間違っていましたので、訂正の上確認下さい。 A2にいれた値をデータで探して、行番号を表示するので A1には、=MATCH(A2,Sheet2!A:A) が正しいです。
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
データの状況がわかりませんが、 データシートのA列に、重複していない管理番号などあったとして、 A2に、表示したいデータの管理番号を入力(Vlookup関数で使用した検索値など) A1には、=MATCH(A1,Sheet2!A:A) と入れると、A2に入れた管理番号の行番号が表示されると思います。 A1の値を利用して Sub ボタン1_Click() GYOU = Range("A1").Value Range("C1").Value=Sheets("Sheet2").Cells(GYOU, 2).Value Range("C2").Value=Sheets("Sheet2").Cells(GYOU, 3).Value Range("C3").Value=Sheets("Sheet2").Cells(GYOU, 4).Value End Sub と、先に紹介したマクロの式の=の左右を入れ替えて見てください。 式の内容を理解すると、やりたいことが自由に出来るようになります。
- hallo-2007
- ベストアンサー率41% (888/2115)
やりたいことが、Sheet1のC1,C2,C3に入力した内容を、ボタンを押すと Sheet2のデータの最後の行の下に、或いは指定した行に、横方向に記録していくということですかね。VBAで仕事を行うに定番のようなマクロです。 以下、試して、そちらの都合に合わせて編集してください。 Sub ボタン3_Click() GYOU = Sheets("Sheet2").Range("B65536").End(xlUp).Offset(1, 0).Row Sheets("Sheet2").Cells(GYOU, 2).Value = Range("C1").Value Sheets("Sheet2").Cells(GYOU, 3).Value = Range("C2").Value Sheets("Sheet2").Cells(GYOU, 4).Value = Range("C3").Value End Sub 補足説明 Range("B65536").End(xlUp).Offset(1, 0).Row は エクセルで使用できる最大行65536行目のB列を上方向へ移動して、空白でない行を探す、その行から1行上へ移動した行番号を取得して、変数GYOUに入れる。 もし、既に、登録してあるデータ行を変更して、書き換えるのであれば、編集しているデータの行番号をSheet1に表示しておいて(仮にA1の場合) 上記マクロのGYOUに GYOU=Range("A1").Value と買えて、別途ボタンも作っておけば、新規登録と編集内容更新のボタンが出来ます。 追記 ご質問にシートに入力とVlookup関数で表示と有りますね。 Vlookup関数で表示させたセルに入力すると、Vlookup関数も消えてしまいます。こちらの機能もVBAに置き換えた方が良いかと思います。
お礼
丁寧な説明をありがとうございます!試してみます。 >Vlookup関数で表示させたセルに入力すると、Vlookup関数も消えてしまいます。 >こちらの機能もVBAに置き換えた方が良いかと思います。 とありますが、もしよろしければ具体的な方法を教えて下さい(><) そこまでは・・・というのであれば、ネットでどのように調べれば出てくるか ヒントを下さると大変助かります。 何度も申し訳ありませんが、よろしくお願いいたします。