基本は、A列の下2桁 ( 各連番が複数ずつあります ) だけが連番になっているんですが、 "たまに" 抜けている ( ない ) 時がありますので、
マクロ実行後に、連番が抜けている ( ない ) 場合に、そこに 「 1行だけ を挿入 」 して、 かつ その行のFS列 ( 175列目 ) まで ハイフン 「 - 」 を入力したいんです。
そして、必ずデータエリア数を 12 or 24 or 36 にしたいんです ( マクロ実行前は 36 を超えることはありません )。
連番が抜けている ( ない ) 場合、多くても 4・5つのデータエリア です。
3通り のマクロが必要のように思いますが、下記例の 1通り をどうかご教授下さいませ。
----------------------------
**01 が 約10~19行 ( 変動します ) まであります ( これを エリア数1 と表現させて頂きます )。
そして、他の 「 **02 ~ **12 」 も同様です。これで 合計エリア数12 となります。
「 **01 ~ **12 」 は、必ず昇順になっています。
下記例は、
エリア数を 実行後 24 にしたい場合の例です ( この場合、実行前は 24 を越えることはありません )。
「 最初の **01 ~ **12 」 のうち 「 **02 」 と 「 **12 」 が抜けている ( ない ) 場合です。
実行前 ( エリア数22 です。「 **02 」 と 「 **12 」 が抜けている ( ない ) )
A列
**01
・
**01
**03
・
**03
・
**11
・
**11
**01
・
**01
**02
・
**12
**12
↓↓↓
実行後 ( 挿入した2行を エリア数2 としまして、 合計エリア数24 となります )
A列 B列 ・ ・ FS列
**01
・
**01
- - ・ ・ -
**03
・
**03
・
**11
・
**11
- - ・ ・ -
**01
・
**01
**02
・
**12
**12
No.1ベストアンサー
- 回答日時:
以下のマクロは抜けている部分に行を追加します。
質問文に「1行だけ」とありましたが、連続で抜けている場合はデータエリア数を12の倍数に合わせるために、抜けた数だけ行を挿入しています。A列の下二桁が数字でない場合はエラーとなります。
Option Explicit
Sub RowsSearch()
Dim i As Integer
Dim n(1) As Integer
i = Range("A65536").End(xlUp).Row '最終行の取得
'最後のデータエリアが抜けている場合
n(1) = CInt(Right(Cells(i, 1).Value, 2))
If n(1) <> 12 Then
Range("A" & i + 1 & ":FS" & i - n(1) + 12).Value = "-"
End If
For i = i To 2 Step -1
'該当セルと上のセルの末尾二桁を取得
n(0) = CInt(Right(Cells(i - 1, 1).Value, 2))
n(1) = CInt(Right(Cells(i, 1).Value, 2))
'末尾が同じ場合、1増えた場合(5→6など)、11減った場合(12→1)は何もしない
If n(1) = n(0) Or n(1) = n(0) + 1 Or n(1) = n(0) - 11 Then
'末尾が減った場合
ElseIf n(1) < n(0) Then
Range(i & ":" & i - n(0) + n(1) + 10).Insert Shift:=xlDown
Range("A" & i & ":FS" & i - n(0) + n(1) + 10).Value = "-"
'末尾が増えた場合
Else
Range(i & ":" & i - n(0) + n(1) - 2).Insert Shift:=xlDown
Range("A" & i & ":FS" & i - n(0) + n(1) - 2).Value = "-"
End If
Next i
'先頭のデータエリアが抜けている場合
If CInt(Right(Cells(1, 1).Value, 2)) <> 1 Then
n(1) = CInt(Right(Cells(i, 1).Value, 2))
Range(1 & ":" & n(1) - 1).Insert Shift:=xlDown
Range("A" & 1 & ":FS" & n(1) - 1).Value = "-"
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- 統計学 新製品が売れているかの統計解析 3 2023/04/27 21:46
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 別シートに順番で貼り付け 2 2023/04/13 19:53
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Visual Basic(VBA) セルに抜けた番号の代わりに空白を挿入する 4 2023/04/10 20:29
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルの関数SUBSTITUTEを、...
-
エクセルVBA Unionはなぜ遅い?
-
エクセルで同じ名前ごとの合計...
-
桁数が混在する並び替えの方法
-
エクセルで列内の同じIDの商品...
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルで一部除外した数字を...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelで行ごとコピー、同じ行を...
-
エクセルでグラフタイトルが折...
-
たくさん作った同じ設定のグラ...
-
Excelの関数について、特定の文...
-
塗りつぶしの色をコピーするには
-
PDFの一部を切り取って別のシー...
-
パワーポイントに貼り付けたエ...
-
日付が1年以内になると他のセル...
-
エクセル
-
【エクセル】表の中の文字だけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセルの関数SUBSTITUTEを、...
-
エクセルVBA Unionはなぜ遅い?
-
エクセルで一部除外した数字を...
-
桁数が混在する並び替えの方法
-
エクセルで列内の同じIDの商品...
-
EXCEL VBA 指定範囲内で特定の...
-
Excelで自動的に並べ替えなんて...
-
エクセル マクロで列を連続し...
-
エクセルで2列を検索し2列とも...
-
EXCEL 指定した曜日に番号を振...
-
エクセルvba 一つ上の行を指定...
-
ExcelVBA:列方向の並び替え O...
-
EXCELで数値の検索
-
エクセル VLOOKUPが反映されない
-
エクセル 並び替え
-
エクセルvbaで、同じ番号の請求...
-
Excelでの並べ替え
-
EXCELである列を上から順にチェ...
おすすめ情報