• 締切済み

エクセルVBAシートの複製と、コピーに関して

以下のようなVBAを使用したいと思っています。 回答.xlsというエクセルファイルに、 回答者233名分の回答が一名一列に並んでいます。 この回答を、一名ずつ違うシートで分析したいと思っています。 その際、下記動作をVBAで行ないたいのですが、うまくいきません。 行ないたい動作は2列目から234列目までの各列に対して、 1,【分析】という名前のシートを複製し、一名一列(A列-AS列)の値を各1列目にコピー 2,コピーしたシートの名前を【分析-x】x=A列目の値とする 以上です。 お忙しいところ大変恐縮ではございますが、ご教授頂けると幸いでございます。

みんなの回答

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

こんにちは。 質問をするときは回答者になったつもりで質問文を考えると分かりやすく伝わると思います。 ●疑問点1 質問では「分析」シートを複製し「分析ーX」を作成するとなってますが、 回答1の補足に提示したコードには、「一対比較」とか「分析結果」などの最初と違うシートがある これでは回答する方が戸惑ってしまうのでちゃんと実際のシート名を提示すること ●疑問点2 >【分析】という名前のシートを複製し、一名一列(A列-AS列)の値を各1列目にコピー この一名一列(A列-AS列)は、一名▲一行▲(A列-AS列)の間違いではないか? 各1列目にコピーとあるが、これは、A-AS列をA列の1~45行(行方向)にコピーするということか。 これが分かると的確な回答が寄せられると思いますよ。 以上です。  

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

私ならコピーは使いませんね。VBAではコピー貼り付けは注意が必要。 それと、もしシートを印刷するつもりなら、シートを233枚など作りません。(画面で233枚のシートを分析するなら別ですが) 元シート1枚、印刷用テンプレート的なもの1枚で、回答者ごとに変わる部分(セル)だけ、代入で変えて、PrintOutを繰り回します。 シートを233枚作るにしても (1)Sheets.Add (2)加えたシートがアクチブになるので、アクチブシートに (A)不動文字(帳票見出し、項目見出しなど)の代入 (B)元シートの行から取ってくる項目の代入 (1)へ戻って繰り返しをします。 コピー方式でも、(1)と(A)がシートのコピーに変わるだけ。 シートタブ部で「移動またはコピー」の操作をして、マクロの記録をとれば判る。 ーーーー >うまくいきません。 質問者は、えてして、どううまくいかないのか、書かない人が多い。 課題の丸投げになるということです。

kulala-ura
質問者

補足

ご指摘ありがとうございます。 ご指摘を参考に、やりたいことを記録したマクロが、下記です。 この、マクロに対して、 ・一対比較のシートをコピーする場所を、常に末尾にする ・元データで参照するデータを一行下にする ・分析結果のシートへのコピー場所を一列横にする を行なえば完成なのですが、 こちらの知識不足で因数と、因数+1の関係がごちゃごちゃになっています。 以上丸投げの形になってしまって本当に申し訳ありませんでした。 アドバイスお願い致します。 ' test Macro ' ' Sheets("一対比較 ").Select Sheets("一対比較 ").Copy After:=Sheets(4) ActiveCell.FormulaR1C1 = "=" Range("B1").Select ActiveCell.FormulaR1C1 = "=元データ!R[1]C[-1]" Range("C3").Select ActiveCell.FormulaR1C1 = "=元データ!R[-1]C[3]" Range("D3").Select ActiveCell.FormulaR1C1 = "=元データ!R[-1]C[3]" Range("E3").Select ActiveCell.FormulaR1C1 = "=元データ!R[-1]C[3]" Range("D4").Select ActiveCell.FormulaR1C1 = "=元データ!R[-2]C[5]" Range("E4").Select ActiveCell.FormulaR1C1 = "=元データ!R[-2]C[5]" Range("E5").Select ActiveCell.FormulaR1C1 = "=元データ!R[-3]C[6]" Range("C10").Select ActiveCell.FormulaR1C1 = "=元データ!R[-8]C[9]" Range("D10").Select ActiveCell.FormulaR1C1 = "=元データ!R[-8]C[8]" Range("D10").Select ActiveCell.FormulaR1C1 = "=元データ!R[-8]C[9]" Range("D11").Select ActiveCell.FormulaR1C1 = "=元データ!R[-9]C[10]" Range("C16").Select ActiveCell.FormulaR1C1 = "=元データ!R[-14]C[12]" Range("D16").Select ActiveCell.FormulaR1C1 = "=元データ!R[-14]C[12]" Range("D17").Select ActiveCell.FormulaR1C1 = "=元データ!R[-15]C[13]" Range("C22").Select ActiveCell.FormulaR1C1 = "=元データ!R[-20]C[15]" Range("D22").Select ActiveCell.FormulaR1C1 = "=元データ!R[-20]C[15]" Range("D23").Select ActiveCell.FormulaR1C1 = "=元データ!R[-21]C[16]" Range("C28").Select ActiveCell.FormulaR1C1 = "=元データ!R[-26]C[18]" Range("G1").Select ActiveCell.FormulaR1C1 = "=RC[-5]" Range("G2").Select Sheets("一対比較 (2)").Select Columns("G:G").Select Selection.Copy Sheets("分析結果").Select Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub

関連するQ&A

専門家に質問してみよう