エクセルVBAでかんたんなデータ入力
- エクセルVBAを利用して、かんたんにデータを入力する方法を教えてください。
- ランダムなデータがある場合、A1~A11をD列以降の横列に入力し、その下にB1~B11のデータを入力します。
- B4~B9のデータは10で割り、小数点第一位まで表示します。RUNボタンを作り、入力したデータに対して実行します。
- ベストアンサー
エクセルVBA【かんたんなデータ入力】
お世話になります。 下記データがランダムに何通りもあるとします。 (1)A1~A11をD列以降横列に入力します。 (2)B1~B11のデータを(1)で作った横列の下に入力します。 またデータはたくさんあり、(2)で入力したデータの下に入力していきます。 (3)データ入力の際B4~B9のデータは10で割り小数点第一位まで出します。 RUNボタンを作り(2)と(3)を実行します。 A1 NO B1 1 A2 年齢 B2 20 A3 性別 B3 ♂ A4 身長 B4 2000 A5 体重 B5 1000 A6 体脂肪率 B6 101 A7 胸囲 B7 1200 A8 胴囲 B8 1000 A9 視力 B9 1 A10 備考 B10 ニュージーランド A11 備考2 B11 ラグビー 上記のようなVBAを教えて下さい。 言葉足らずな点は補足させて頂きます。 宜しくお願い致します。
- hidenakata
- お礼率67% (281/416)
- Excel(エクセル)
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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 こんな感じでしょうか。
その他の回答 (2)
- mar00
- ベストアンサー率36% (158/430)
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)
>またデータはたくさんあり、(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
補足
早速のご回答ありがとうございます。 ご不明な点を補足させていただきます。 データをD2からN2まで入力させます。 次にまたB1からB11までデータを入力しRUNボタンを押します。 D3からN3に入力させます。 次はD4からN4のように連続してデータを入力させます。 下に入力するとはこのような意味です。 言葉足らずで申し訳ありませんでした。 よろしくお願い致します。
関連するQ&A
- ExcelのVBAについて
ExcelのVBAについて VBA全くの初心者です。 以下のような処理を行いたいのですが、どなたかご教授をお願いします。 以下のように支店(1)~(3)のシートがあります。 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、 一致しない行を不一致データシートに出力する もう一つ別のマクロで、 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、、 一致する行を一致データシートに出力し、D列に対象データがあるシート名を表示する ※可能でしたら、E列に対象データがある行番号も表示する -------------------------------- シート名:支店(1) A B C 商品No 商品名 備考 011 商品A 備考A 009 商品B 備考B 015 商品C 備考C -------------------------------- シート名:支店(2) A B C 商品No 商品名 備考 008 商品A 備考A 023 商品B 備考B 004 商品C 備考C -------------------------------- シート名:支店(3) A B C 商品No 商品名 備考 007 商品A 備考A 033 商品B 備考B 018 商品C 備考C -------------------------------- シート名:入力シート A B C 商品No 商品名 備考 ※ここに複数行入力する -------------------------------- シート名:不一致データシート A B C 商品No 商品名 備考 ※ここに出力される -------------------------------- シート名:一致データシート A B C 商品No 商品名 備考 ※ここに出力される
- 締切済み
- Visual Basic
- Excel 同じデータを入力出来ないように。
こんにちは。 教えて頂きたいのは、データの重複を避ける方法です。 シートのA列に番号(英数字)を入力します。 この番号は、ランダムに振ります。 B列以降に個人のデータを入力します。 A列の番号は、先に説明したとおりランダムなので、 ダブって同じ番号で、別の人を登録してしまう事があります。 色々と方法は有るでしょうが、単純にA列のセルに、 番号を入力する→既に使っている番号→入力できない。 或いは、エラーになる等、何か「簡単!」な方法は有るでしょうか? --- たくさんの回答を頂いた場合、全ての方にお礼を送る事が出来ないかも知れません。 申し訳ありません。
- ベストアンサー
- オフィス系ソフト
- エクセルでの数値入力で
こんにちは。 エクセルで数値を入力する場合に,その入力したセルの表示を条件によって小数点以下の桁数を変えたいのです。 例えば,入力セルがB4だとし,B4に 12.8 を入力したとき, A1が1のときはB4の表示は 12.80 (小数点以下2桁まで表示) A1が2のときはB4の表示は 12.8 (小数点以下1桁まで表示) としたいのです。直接入力するセルの表示なので,関数は使えず,条件付書式では,表示形式が使えません。 また,マクロは使わずにやりたいのです。ワークシートは,エクセルにも不慣れな初心者が入力することを想定して作っています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルでのデータ入力について
質問は2つあります。 1.セルA1からA5まで,違う文字データが入っている。 全てのデータの頭に同じ文字を「簡単に」入れたい。 置換を使って「*」→「A*」とやろうとしましたが, (全てのデータの頭に「A」を入力したいとする) データそのものが,「A*」に変わってしまいました。 2.セルA1からA4まで順番に "a-1","a-2","b-1","b-2"という4つのデータがはいっている。 これを,ドラッグで(オートフィル?),引っ張ったときに, 自動的に,"c-1","c-2","d-1","d-2",,,,,,, と入力したいんですが,出来ますか? 以上2点,片方だけでもいいので,分かる方がいらっしゃったら, よろしくお願い致します。:)
- ベストアンサー
- オフィス系ソフト
- VBAで入力数値について
Excel VBAでTextBoxに入力された数値が整数か小数か判定し、 小数の場合は、下記のようにしたいのですが、どのようにしたらよいのでしょうか。 TextBoxに入力された数値が、 (1)整数の場合・・・A=TextBox1.Value (2)小数点第一位の場合(1.5など)・・・A=TextBox1.Value*10 (3)小数点第二位の場合(1.55など)・・・A=TextBox1.Value*100 どなたかご教授願います。
- ベストアンサー
- Visual Basic
- ExcelデータをPowerPointに・・・
●ExcelのA列に質問事項、B列に回答、C列に備考が入力してあるデータがあります。 PowerPointには3つのテキストボックスがならんでおり、それぞれにA列の質問事項、B列の回答、C列の備考をいれていきます。 Excelデータを見ながらひとつひとつ入力すればかなりの時間がかかってしまいます。なのでExcelデータを利用して簡単にPowerPointに入力(エクスポート)する方法はないでしょうか???
- 締切済み
- オフィス系ソフト
- Excelでデータの並べ替えについて
例えば、A1からA10まで名前がランダムに入力されているとします。 そのデータを昇順に並べ替えた状態でB1からB10まで表示させる方法はありませんでしょうか? A列のデータが変更されるとB列に反映されるようにしたいのですが。
- ベストアンサー
- Excel(エクセル)
- エクセルに入力したデーター並び替え方法。
ウインドウズ7を使用しています。 オフィス2010になります。 エクセルの表にランダムに文字や数字を入力したその後にデーターの並び替えをしたいのですが、 古いオフィスでやっていたので、新しいバージョンでうまくデーターの並び替えが出来ません。 ランダムに入力した文字や数字を、揃えたいのです。 例えば A列に 都道府県 B列に 月日 C列に金額等をランダムに入力し、都道府県でまとめて それに伴って 月日・金額を一度にまとめてデーターの並び替えをしたいのです。 並び変えて各都道府県別の集計が出るようにしたいのです。 都道府県 月日 金額 大阪 6/2 3.000 和歌山 6/4 5.000 京都 6/8 8.000 奈良 6/9 5.000 大阪 6/10 8.000 奈良 6/11 6.000 もっと長いデーターになりますが以上のようなデーターを下記のようにしたいのです。 都道府県 月日 金額 大阪 6/2 3.000 大阪 6/10 8.000 大阪小計 11.000 奈良 6/9 5.000 奈良 6/11 6.000 奈良小計 11.000 和歌山 6/4 5.000 のように並び替えをしたいと思っています。 わかりづらいと思いますがご指導のほどよろしくお願いいたします
- ベストアンサー
- Windows 7
- EXCEL 同一データ入力したいです教えて下さい。
A1セルに入力したデータをB1にも入力できるようにしたいです教えて下さい、コピー貼り付けを使わず関数を使って出来るようにしたいです。お願いします
- ベストアンサー
- オフィス系ソフト
お礼
出来ました!ありがとうございました!! 式の解説・・・ お願いできますか?