電子書籍の厳選無料作品が豊富!

閲覧ありがとうございます。VBA初心者なのですが、質問させていただきます。

1件につき7行あるデータを縦方向に何百件かペーストし、そのあと件ごとに必要な行だけをINDEX(7行おきにデータを引っ張る)で別シートに移すというマクロを組んでいるのですが、まれに2行目と7行目が存在しない、5行しかないデータがあるのです。
例えば本来い、ろ、は、に、ほ、へ、と、というように7行あるデータの中に紛れて、い、は、に、ほ、へ、しかないデータです。
ちなみにその後のINDEXで抜き出したいのは「い」と「ろ」にあたる行です。

その際にINDEXで抜き出す行がズレてしまわないように、「ろ」「と」が存在しなければ「ろ」「と」に相当する空白のセル、もしくは指定の文字を入力したセルを挿入するということがしたいのですが、そういったことは可能でしょうか?

一応、「ろ」行でなければいけないのに「は」行になっている、「と」行でなければいけないのに次の件の「ろ」行が来てしまっている、の判定は出来ますので、その場合は該当セルの右に目印として「下方向に挿入(仮)」と出力されます。

説明が伝わりにくいなど、なにか不備があればご質問ください。
何卒よろしくお願いいたします…。

「VBA 右隣に特定の文字列がある時に行を」の質問画像

A 回答 (3件)

こんばんは。



例えば、下記の様な感じでしょうか?
(全て手書きですので、記載ミスなどでエラーが出るかも知れませんが、適宜対応して下さい。)
あとは、実際のデータ用に、適宜調整して下さい。

問題のデータが、E1に書かれていると想定して。

Sub test()
Dim Y as Long,N as Long,myDat as String,

myDat = "いろはにほへと"
Y=3 ' 開始行 3行目から開始
N=1 ' 文字判定用 いろは~の最初から何文字目か
Do
If cells(Y,5).Value <> Mid(myDat,N,1) Then 'E3から下を処理
With Cells(Y,5)
.Resize(,2).Insert Shift:=xlDown
.Value = Mid(myDat,N,1)
End With
End If
Y=Y+1
N=N+1
If N>7 Then N=1
Loop While Cells(Y,5).value <>"" or Y > 100 'E列が空白になるまで。

End Sub

念のために、100行を超えると止まる様にしています。
(不具合がおきると、永遠に終わらなくなる可能性があるので。。。)
    • good
    • 0

こんにちは



>「と」行でなければいけないのに次の件の「ろ」行が来てしまっている、
>の判定は出来ますので~~
その判定をどのようにして行っているのか不明ですけれど、判定の処理と一緒に処理すべき内容だと思います。


ご提示の、
>該当セルの右に目印として「下方向に挿入(仮)」と出力されます。
を目印にしようとしても、それだけではガイドにならないので無理でしょう。
同じ「下方向に挿入」と記されていても、実際には、
 ・「は」の行では1行「上」に行を挿入
 ・「へ」の行では1行「下」に行を挿入
という点だけをとっても、処理の内容が異なりますので・・・
    • good
    • 0

ごめんなさい、実際のVBAの文を出してもらったほうがフォローが付きやすいと思います。


あと いろは は理解するのに厳しいと思うのは私だけかしら・・・・。
    • good
    • 0

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