新しく質問する

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

役に立った:1件
  • 質問者:huaban
  • 投稿日時:2007/10/26 11:16
  • 困り度:暇なときに回答をください
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

お伺いします。
あるフォーマットの一部分を記録として、一覧表にする仕事
をしています。

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

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)
  • 参考になった:0件

No.2ベストアンサー10pt

  • 回答者:imogasi
  • 回答日時:2007/10/26 22:56

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

通報する

この回答への補足

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

  • 参考になった:0件

No.1ベストアンサー20pt

  • 回答者:49ers
  • 回答日時:2007/10/26 15:56

例に挙げられているのが、毎回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


あまり良い例ではありませんが、このような形でも実行が可能になります。

通報する

この回答へのお礼

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

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ

Facebook公式ページ

公式Twitter