プロが教える店舗&オフィスのセキュリティ対策術

以下のようなVBAを使用したいと思っています。

回答.xlsというエクセルファイルに、
回答者233名分の回答が一名一列に並んでいます。
この回答を、一名ずつ違うシートで分析したいと思っています。
その際、下記動作をVBAで行ないたいのですが、うまくいきません。

行ないたい動作は2列目から234列目までの各列に対して、
1,【分析】という名前のシートを複製し、一名一列(A列-AS列)の値を各1列目にコピー
2,コピーしたシートの名前を【分析-x】x=A列目の値とする
以上です。
お忙しいところ大変恐縮ではございますが、ご教授頂けると幸いでございます。

A 回答 (2件)

こんにちは。


質問をするときは回答者になったつもりで質問文を考えると分かりやすく伝わると思います。

●疑問点1
質問では「分析」シートを複製し「分析ーX」を作成するとなってますが、
回答1の補足に提示したコードには、「一対比較」とか「分析結果」などの最初と違うシートがある
これでは回答する方が戸惑ってしまうのでちゃんと実際のシート名を提示すること


●疑問点2
>【分析】という名前のシートを複製し、一名一列(A列-AS列)の値を各1列目にコピー

この一名一列(A列-AS列)は、一名▲一行▲(A列-AS列)の間違いではないか?
各1列目にコピーとあるが、これは、A-AS列をA列の1~45行(行方向)にコピーするということか。

これが分かると的確な回答が寄せられると思いますよ。
以上です。
 
    • good
    • 0

私ならコピーは使いませんね。

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

この回答への補足

ご指摘ありがとうございます。
ご指摘を参考に、やりたいことを記録したマクロが、下記です。
この、マクロに対して、
・一対比較のシートをコピーする場所を、常に末尾にする
・元データで参照するデータを一行下にする
・分析結果のシートへのコピー場所を一列横にする
を行なえば完成なのですが、
こちらの知識不足で因数と、因数+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

補足日時:2007/01/15 00:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!