- ベストアンサー
【Excel初心者】リスト自動作成ツール
- Excelでリストの自動作成ツールを作成することになり、基本Webを参考にして作業を進めていきました。
- 今実装したい機能は以下の点です。Sheet2への表自動挿入、Sheet2へ抽出したSheet1の値を保持したまま、Sheet1の入力内容のクリアー。
- ボタンを作成し、ボタン押下をトリガーとして上記機能を操作したいのですが、これはマクロで実現可能なのでしょうか?それとも数式で実現可能なのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
【Sheet1】 ┌───┬───┬───┐ │ │ A │ B │ ├───┼───┼───┤ │ 1 │項目1│あいう│ ├───┼───┼───┤ │ 2 │項目2│かきく│ ├───┼───┼───┤ │ 3 │項目3│さしす│ └───┴───┴───┘ 【Sheet2】 ┌───┬───┬───┬───┐ │ │ A │ B │ C │ ├───┼───┼───┼───┤ │ 1 │項目1│項目2│項目3│ ├───┼───┼───┼───┤ │ 2 │あいう│かきく│さしす│ ├───┼───┼───┼───┤ │ 3 │ │ │ │ ├───┼───┼───┼───┤ │ 4 │ │ │ │ └───┴───┴───┴───┘ 上の表を例として作成しています。 Sub DataCopy() Dim iMaxRow, iCount As Integer ' データ挿入行を取得 If Range("Sheet2!A2").Value = "" Then iMaxRow = 1 Else iMaxRow = Range("Sheet2!A1").End(xlDown).Row End If ' データの複写と消去 For iCount = 0 To 2 Range("Sheet2!A1").Offset(iMaxRow, iCount).Value _ = Range("Sheet1!B1").Offset(iCount, 0).Value Range("Sheet1!B1").Offset(iCount, 0).ClearContents Next iCount End Sub ※Endプロパティで最終行を探しているので、Sheet2のA列は途中に空のセルを含むことができません。空のセルがあると、ひとつ前の行を最終行と判断します。 ※上の表は、ブラウザのフォントを等幅フォントにすると綺麗に見えます。
お礼
ご返答遅れてしまい申し訳ございません。 問題が解決致しました。 本当にありがとうございました。
補足
ご回答ありがとうございます。 自分で試していましたらお礼が遅れてしまいました。申し訳ございません。 「Range("Sheet2!A1")」など、私のPC環境では思うように動作せず、「Worksheets("sheet2").Range("A1")」と指定しなおした所動作いたしました。 また一部自分の欲しい挙動を行うために書き換えました。 重ねてもう一つご質問させてください。 数式のセルを消去対象に含めないようにするには、文字列検索で一文字目に"="が検出されたら、その値は消去しないという風にしたく、下記のVBAを書いてみましたが、「Nextに対するForがありません」というエラーが表示されます。 ' データの複写と消去 For iCount = 0 To 3 ' Sheet1 複写対象行数 Worksheets("sheet2").Range("B1").Offset(iMaxRow, iCount).Value _ = Worksheets("sheet1").Range("B1").Offset(iCount, 0).Value If Right(Worksheets("sheet1").Range("B1").Offset(iCount, 0).Value, 1) = "=" Then Next iCount Else Worksheets("sheet1").Range("B1").Offset(iCount, 0).ClearContents Next iCount この場合、どこを修正したら宜しいのでしょうか?