こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Excel初心者】リスト自動作成ツール

Excelでリストの自動作成ツールを作成することになり、基本Webを参考にして作業を進めていきました。

今現時点で出来ているのは以下の点です。
 ・Sheet1で入力したセルの値を、Sheet2の任意のセルへ抽出している(数式使用)

今実装したい機能は以下の点です。
 ・Sheet2へ抽出したSheet1の値を保持したまま、Sheet1の入力内容のクリアー(Sheet1の入力内容クリアー後も、Sheet2のセル内値は保持されたまま)
 ・Sheet2への表自動挿入(今は事前に作成した表(適当にセルを複数選択し、罫線機能をつかって囲んだもの。)の中に数式を埋め込んでいます)

ボタンを作成し、ボタン押下をトリガーとして上記機能を操作したいのですが、これはマクロで実現可能なのでしょうか?
それとも数式でまだなんとかなるレベルなのでしょうか?

もし可能であれば、例をご教示いただけたら幸いです。
宜しくお願い致します。

投稿日時 - 2006-10-14 14:18:18

QNo.2471743

困ってます

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

【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列は途中に空のセルを含むことができません。空のセルがあると、ひとつ前の行を最終行と判断します。
※上の表は、ブラウザのフォントを等幅フォントにすると綺麗に見えます。

投稿日時 - 2006-10-14 17:40:07

補足

ご回答ありがとうございます。
自分で試していましたらお礼が遅れてしまいました。申し訳ございません。

「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

この場合、どこを修正したら宜しいのでしょうか?

投稿日時 - 2006-10-16 10:28:14

お礼

ご返答遅れてしまい申し訳ございません。

問題が解決致しました。
本当にありがとうございました。

投稿日時 - 2006-10-25 22:22:14

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問