• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA【かんたんなデータ入力】)

エクセルVBAでかんたんなデータ入力

このQ&Aのポイント
  • エクセルVBAを利用して、かんたんにデータを入力する方法を教えてください。
  • ランダムなデータがある場合、A1~A11をD列以降の横列に入力し、その下にB1~B11のデータを入力します。
  • B4~B9のデータは10で割り、小数点第一位まで表示します。RUNボタンを作り、入力したデータに対して実行します。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

Sub Macro1() Dim INP As Integer, INP2 As Integer For INP = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 11 Range(Cells(INP, "B"), Cells(INP + 10, "B")).Copy myRow = Cells(Rows.Count, "D").End(xlUp).Row + 1 Range("D" & myRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Application.CutCopyMode = False For INP2 = 7 To 12 Cells(myRow, INP2) = Cells(myRow, INP2) / 10 Next INP2 Next INP End Sub こんな感じでしょうか。

hidenakata
質問者

お礼

出来ました!ありがとうございました!! 式の解説・・・ お願いできますか?

その他の回答 (2)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

ANo.2です。 変数のデータ型 http://excelvba.pc-users.net/fol5/5_2.html For~Nextステートメント http://excelvba.pc-users.net/fol6/6_3.html Cells(Rows.Count, 1).End(xlUp).RowはA列の最終行が返ります。 Cells(Rows.Count, 1).End(xlUp).RowはCells(Rows.Count,"A").End(xlUp).RowでもOKです。 Step 11は変数(INP)を1、12、23と11ずつ加算するという意味です。 Step 11をつけなれれば変数(INP)を1、2、3と1ずつ加算していきます。 Range("B1")はCells(1,2)やCells(1,"B")とすることができます。 RangeをCellsにするときはCells(行番号,列番号)やCells(行番号,列名)にします。 Range(Cells(INP, "B"), Cells(INP + 10, "B")).Copyは、1番最初はB1からこ11までをコピーするので Range("B1:B11")はRange(Cells(1, "B"), Cells(11, "B")) 変数を使っているのでRange(Cells(INP, "B"), Cells(INP + 10, "B"))となります。 myRow = Cells(Rows.Count, "D").End(xlUp).Row + 1はコピー先の行がD列の最終行の下なので1を加算しています。 その下の処理は形式を選択して貼り付けの値、行列を入れ替えるの処理です。 For INP2 = 7 To 12 は対象がG列からL列なのでこうなります。(列番号です A列は1) うまく説明できなくてすいません。 マクロの記録でB1からB11をコピーしてD2に形式を選択して貼り付け→値二チェック→行列を入れ替えるにチェックしてOK そのマクロと見比べてみて下さい。 あとはステップインで1つずつ動作を確認するとわかりやすいかもしれません。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

>またデータはたくさんあり、(2)で入力したデータの下に入力していきます。 VBAを使うほどではないと思いますが。 この部分が不明ですが、以下の様な感じかと思います。 Sub macro() Dim C As Range Range("A1:B11").Copy Range("D1").PasteSpecial xlPasteAll, Transpose:=True Range("G2:L2").NumberFormatLocal = "0.0" For Each C In Range("G2:L2") C.Value = C.Value / 10 Next C End Sub

hidenakata
質問者

補足

早速のご回答ありがとうございます。 ご不明な点を補足させていただきます。 データをD2からN2まで入力させます。 次にまたB1からB11までデータを入力しRUNボタンを押します。 D3からN3に入力させます。 次はD4からN4のように連続してデータを入力させます。 下に入力するとはこのような意味です。 言葉足らずで申し訳ありませんでした。 よろしくお願い致します。