エクセルVBA作製ができません。どなたか教えてください。
会社の作業単純化のためにVBA作製しようと思ったものの、うまくできません。出来る方ならすぐ出来てしまうのではと思い質問させていただきます。
作りたいのは1つのファイル「Book1」にあるデータをコマンドボタンを押すと「Book2」にコピーさせたいのですが、
条件がありまして、
「Book1」には横並びに5個のセルに数字がそれぞれ入っていたり、いなかったりするのですが、
5個のうちいちばん左のセルに数字が入っていたら実行、入っていなかったらその右のセルにセルを移動するという式if then?で場合分けをしたいです。
そして、もし実行ならその数字や他の任意のA1、G4、H6(ちなみA1、G4、H6は文字)など指定したセルをコピーして「Book2」にペーストしたいです。
しかしそこでペーストする先の指定したセルに文字が入っていたらその
下のセルにペーストという条件も加えたいです。ここでloopを使う?
コピーペースト出来たら、また、「Book1」のいちばん左の右のセルに数字が入っているかどうかでコピーペーストをするという作業を繰り返したいです。なのでいちばん最初にFor Nextで5回繰り返す式を入れる?
要はBook1の5個の数字を参照していってセルに入力されていれば
数字や他の文字をBook2にペーストしたいんです。どなたかVBAの式を教えてください。
宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
要求事項を勘違いしていた気がします。
・データ無かったら次の列を見る のではなく、数字でなかったら次の列を見る
・Book2にはあらかじめ何か書いてあるかもしれないので空いたセルを探す
という条件で修正してみました。
Dim i As Integer '行
Dim j As Integer '列
Dim k As Integer 'Book2の行
Dim Data1 As String '検索するデータ
Dim DataA As String 'A1セルのデータ
Dim Data2 As String 'Book2のセルの内容チェック用
k = 1
For i = 2 To 10 '2行目から10行目まで繰り返し
For j = 1 To 5 '1列目から5列目まで繰り返し
Data1 = Val(Workbooks("Book1.xls").Worksheets("Sheet1").Cells(i, j).Value)
If Data1 > 0 Then '数字か?
'数字以外で必要なデータを取得(仮にA1のセルとする)
DataA = Trim(Workbooks("Book1.xls").Worksheets("Sheet1").Cells(1, 1).Value)
Do
'Book2の空いているセルを探す。
Data2 = Trim(Workbooks("Book2.xls").Worksheets("sheet2").Cells(k, 1).Value)
If Data2 = "" Then
'Book2に貼り付ける。
Workbooks("Book2.xls").Worksheets("Sheet2").Cells(k, 1).Value = Data1
Workbooks("Book2.xls").Worksheets("Sheet2").Cells(k, 2).Value = DataA
Exit Do
End If
k = k + 1
Loop 'やはりLoopを使います!
End If
Next j
Next i
MsgBox ("おわり")
A1セルから取ったデータは2列目に入れていますが、1列目に入れるのならLoop部分を工夫してください。
意図するものと多少違うかもしれませんが、これを参考にやってみてくださいね。
回答していただきありがとうございます。
教えていただいた式を頼りにいろいろやってみたいと思います。
ただ、やろうと思ったセルが結合されたセルだったので
まだまだ工夫しなければ出来なそうです。
No.1
- 回答日時:
Book1 で行と列の両方でループが必要ですね。
こんな感じ。
Dim i As Integer '行
Dim j As Integer '列
Dim k As Integer 'Book2の行
Dim Data1 As String '取得するデータ
k = 1
For i = 2 To 10 '2行目から5行目まで繰り返し
For j = 1 To 5 '1列目から5列目まで繰り返し
Data1=Trim(Workbooks("Book1.xls").Worksheets("Sheet1").Cells(i, j).Value)
If Data1 <> "" Then
'Book2に貼り付ける。必要なら他のデータもペーストする。
Workbooks("Book2.xls").Worksheets("Sheet2").Cells(k, 1).Value = Data1
k = k + 1
Exit For
End If
Next j
Next i
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 条件が一致した場合の...
-
リース初心者です 利子率の計...
-
エクセル関数で {=TABLE(,セル...
-
Excel2010の並べ替えで行の高さ...
-
プルダウンで選択すると隣のセ...
-
エクセルで離れたセルを離れた...
-
エクセルを使った分配比率の求...
-
至急! Excelで歩合計算
-
エクセルで作った書類に、パン...
-
エクセルで複雑な表の作り方
-
エクセルで複数の勤務時間ごと...
-
エクセルで有給休暇の取得日数...
-
60進法で複数セルの足し算、引...
-
EXCELでR1C1参照形式の絶対参照...
-
Excelの空白行を上に詰めるVBA...
-
Excelハイパーリンクのアドレス...
-
エクセルで行ごとに繰り返しの...
-
エクセルデータをワードへ反映...
-
エクセルで一番下の日付や時刻...
-
エクセルデータを拡大/縮小して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2010の並べ替えで行の高さ...
-
リース初心者です 利子率の計...
-
エクセルで離れたセルを離れた...
-
エクセルで複数の勤務時間ごと...
-
エクセル関数で {=TABLE(,セル...
-
プルダウンで選択すると隣のセ...
-
VBA 条件が一致した場合の...
-
エクセルで作った書類に、パン...
-
60進法で複数セルの足し算、引...
-
エクセルシートを重ねることは...
-
Excelハイパーリンクのアドレス...
-
至急! Excelで歩合計算
-
エクセルを使った分配比率の求...
-
今日の日付が第n曜日かを求める
-
Excelのオートカルクの結果をコ...
-
Excelの空白行を上に詰めるVBA...
-
エクセルデータをワードへ反映...
-
エクセルの行高さが、挿入作業...
-
Excelの基本を1週間で覚えたい
-
Excelで歩合給の計算をしたいの...
おすすめ情報