マクロ 条件にあった数字を連続コピー
図のように商品IDと日付と文字列が混在しているCSVのデータがあります
商品ID(1~7桁までの数字)を図のように商品IDから別の商品IDまで下に連続コピーしていくマクロを作りたいです。
理論上可能ととある人に言われてるのですが、VBA初心者の為すでに完全されてるマクロを改変して利用する事しかできません。
似たようなマクロを見つけることができなくて難航しています。
どなたかご教授していただければ幸いです。よろしくお願いします。
No.1
- 回答日時:
おはようございます。
>理論上可能と
論理的に処理を説明できる場合は、ほとんどの場合、VBA(マクロ)に限らず処理する事が可能と思います。
しかし、説明と添付図を見る限り並び替えている順序などの法則が分かりません。
>似たようなマクロを見つけることができなくて難航しています。
もし、添付図作成の為、何だかの処理を行ったのであれば、それをマクロの自動記録で作り、改変してみてはどうでしょう?
マクロの自動記録で記録したプロシージャは、十分、改変元の役割をしますよ。
>VBA初心者の為すでに完全されてるマクロを改変して利用する事しかできません。
確かに繰り返されるロジックを纏めたり、記録できない条件などを考える必要はありますが、、、
多分、8,9割は自動記録で出来るのではないでしょうか?
回答ありがとうございます。
商品IDから商品IDの間が同じ間隔であれば自動記録から応用できたのですが、全て同じではないのでできませんでした。
A列の法則として、
商品ID→「OK」複数→日付(8桁「/」あり)→日付(8桁)→商品ID・・・
のループです。「OK」と「/」は置換で消せます。
考えてるものとして、A行で7桁以下の数字を検索し、ヒットしたところからヒットしたところの前までオートフィル(コピー)をするのを繰り返すというのがいいと考えてます。これも自動記録でできないか試しましたが、そもそも7桁以下の数字を検索する方法が調べてもわかりませんでした。
それか、「OK」を置換で消して空欄にし、A3開始で空欄までオートフィルコピー(A6まで)、そこから2コメント下のセル(A9)アクティブ?にしてから空欄までオートフィルコピー・・・を繰り返すでもできそうです。
説明不足で申し訳ありません。もう少し考えてみます。
No.2ベストアンサー
- 回答日時:
#1です。
投稿後気が付きましたが、単純にOKとされているセルを上の値で埋めるだけで良いのですか?
もっと難しく考えていました、申し訳ない。
こんな感じなのかな、、
Sub sample()
Dim i As Long, LastRow As Long
Columns("D:E").ClearContents
Columns("D:E").NumberFormatLocal = "G/標準"
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:B" & LastRow).Copy Destination:=Range("D1")
' Range("D1:E" & LastRow).Value = Range("A1:B" & LastRow).Value
For i = 2 To LastRow
If Cells(i, "D").Value = "OK" Then
Cells(i, "D").Value = Cells(i - 1, "D").Value
End If
Next
End Sub
No.3
- 回答日時:
別の話になってしまうので取り敢えず少しだけ
>そもそも7桁以下の数字を検索する方法が調べてもわかりませんでした。
Len(Cells(2, "A")) これは、A2セルに入力されている文字数を返します。
なので
Sub test()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Len(Cells(i, "A")) <= 7 And Len(Cells(i, "A")) > 0 Then
MsgBox (i & "行は7文字以下です")
End If
Next i
End Sub
の様に書くと
A列1行目から下に入力されている行がなくなるまで
入力されている文字数を取得して行き、空白以外、7文字以下の時
iの値(1から始めているので行数と同じ)をメッセージで出します。
テストする時は少ない行で行ってください。
なるほど、こうすればよいのですね!勉強になります。
そして、No.2の回答を参考にしてマクロ組んだところなんとか無事成功できました。
詳しくありがとうございました。No.2の回答をベストアンサーにさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
【EXCEL VBA】オートシェイプを...
-
TERA TERMを隠す方法
-
ExcelのVBA。public変数の値が...
-
ExcelVBAでPDFを閉じるソース
-
Excel マクロでShearePoint先の...
-
Excel VBAからAccessマクロを実...
-
wordを起動した際に特定のペー...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBAを使ってタイトル行...
-
エクセルで別のセルにあるふり...
-
ExcelVBAの繰り返し処理でwebク...
-
Excel_マクロ_現在開いているシ...
-
エクセルマクロでワードの一ペ...
-
特定文字のある行の前に空白行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
Excel マクロでShearePoint先の...
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
マクロ実行時、ユーザーフォー...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
マクロで空白セルを詰めて別シ...
-
【EXCEL VBA】オートシェイプを...
-
エクセルのマクロをセルの値に...
おすすめ情報