• ベストアンサー

フォーマットの中にある一部分を一覧表にしたい。

お伺いします。 あるフォーマットの一部分を記録として、一覧表にする仕事 をしています。 すべてコピー&ペーストでしていますが、マクロを組めば、 数箇所のセル(ex:日付/G1、件名/A1、内容/B5、担当者/D1、 金額/H20)を違うシートの一覧表の一行のセル(ex:A1,B1,C1 ,D1,E1)にコピーをする事は可能でしょうか? 方法をわかる方がいれば教えて下さい。

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

  • ベストアンサー
  • 49ers
  • ベストアンサー率50% (5/10)
回答No.1

例に挙げられているのが、毎回1レコード分だけで、同じ場所にコピーするのであれば、エクセルマクロの自動記録で記録しておけば、毎回使えます。 しかしレコード数が可変で、コピー先も前回処理分の次からコピーしたいといかであれば、自分で組む必要があります。 例えば、Sheet1に A1=日付1 B2=名前1 C3=用件1 A4=日付2 B5=名前2 C6=用件2 A7=日付3 B8=名前3 C9=用件3 というレコードが存在して、これをsheet2へ1行にしてコピーしたいとします。 件数固定で、コピー先が毎回1行目からで良いのであれば下のような例が挙げられます。 Sub A() 回数 = 3 '繰り返す回数 開始 = 1 'コピーする塊の最初の行番号 間隔 = 3 コピー先日付 = "A" コピー先名前 = "B" コピー先用件 = "C" Application.ScreenUpdating = False Application.Calculation = xlManual For カウンタ = 開始 To 回数 '開始行から回数分繰り返す 日付 = (カウンタ * 3) - 2 セル = "A" & 日付 Sheets("sheet1").Select Range(セル).Select Selection.Copy セル番号 = コピー先日付 & カウンタ Sheets("sheet2").Activate Range(セル番号).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False 名前 = (カウンタ * 3) - 1 セル = "B" & 名前 Sheets("sheet1").Activate Range(セル).Select Selection.Copy セル番号 = コピー先名前 & カウンタ Sheets("sheet2").Activate Range(セル番号).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False 用件 = カウンタ * 3 セル = "C" & 用件 Sheets("sheet1").Activate Range(セル).Select Selection.Copy セル番号 = コピー先用件 & カウンタ Sheets("sheet2").Activate Range(セル番号).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False Next Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub あまり良い例ではありませんが、このような形でも実行が可能になります。

huaban
質問者

お礼

書き込み遅くなりすみません。 ご丁寧に教えていただいてありがとうございます<m(__)m> でも自分でVBAも理解して作らないとダメだな~と感じています。 こんなに丁寧に教えていただきましたが、やはりよくわかりません。 人任せではなく、自分で勉強して理解しないと応用もききませんよね? 書き込みしてもらったのを参考に自分でやってみます。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

言いたい質問内容は判るが、>フォーマットというのは意味があいまい。 一般的な意味で罫線枠などある帳票? 帳票の形式・項目構成 エクセル等プログラムのでの書式(コード=英語で使う) などあり、分かり難い エクセルでは用語はシートしかない。後はユーザーの思い込みの表現。 シート上の単一の塊で、 >数箇所のセル(ex:日付/G1、件名/A1、内容/B5、担当者/D の数箇所はどういう関係にあるのですか。 まさかシートが複数あるのではないでしょうね。 それが決まったルールとか表とかで表現できないとプログラムを組めないし、数回の操作が(例えばボタンを押すとか)必要になる。 数箇所を文章で表現すればどうなるのでしょう。 本件課題を丸投げで、自分でVBあを勉強したことが伺えない。 それでは自分の場合に合わせた修正もできなくて、回答が無駄になります。 >わかる方がいれば VBAを少しやった方なら回答できます。 多分10数行以内でしょう。

huaban
質問者

補足

簡単なプログラムでもよくわからず、少し丸投げなような質問 をしてしまいました。VBAを勉強しなくちゃいけないと思って います。

関連するQ&A