
No.2ベストアンサー
- 回答日時:
>「0」という表示があると、エラー400になりました。
空白で考えてしまいましたが0はResize(0)でダメですね
>実行する前に、「0」を消す・非表示などにすれば
実行条件を検討してみてください
セル値が数値であり1以上にする場合の例
If IsNumeric(Cells(i, 1)) And Cells(i, 1) >= 1 Then
Cells(i, 1).Offset(1).Resize(Int(Cells(i, 1))).EntireRow.Insert
End If
Intは小数であった場合の整数部分で挿入行数にしています
他に考えられるエラーもありますので 検証条件を加えるか
Excelの仕様範囲の数値で使う必要があります
No.5
- 回答日時:
#1#2です
検証およびお礼ありがとうございます
初めてのご質問者でしたので回答へのレスがあるかわからなかったので
説明抜きで回答しました。失礼しました
>A列の数字を上から確認して、値があるとき、その値分の空白の行を挿入したいです。
#1の回答はご質問手順(上から)に沿った回答ではありません
もし、手順のように処理を進めると 一例として
Sub test2()
Dim lastRow As Long, n As Long
Do
n = n + 1
With ActiveSheet.Cells(n, 1)
If IsNumeric(.Value) And .Value >= 1 Then
.Offset(1).Resize(.Value).EntireRow.Insert
n = n + .Value
End If
End With
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Loop Until n > lastRow
End Sub
のような感じになります
繰り返し処理によるExcelシートの行列挿入(削除)は基本的には#1のように最終行(最右列)より上部(左)に処理を行います
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
これにより追加(削除)で変化する処理行および最終行(最右列)に対応します
ここが躓きポイントだと思います
上の処理では変化する最終行を繰り返し処理の度に取得して繰り返し処理の継続判断をしています
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Loop Until n > lastRow
また挿入による処理行の変化を挿入後にカウント変数に挿入数を加え代入して次の処理行特定しています
n = n + .Value
上から処理ですとどうしても処理が増えてしまいますね
メイン処理の行の挿入については他の方も回答されているので割愛しますが
Rows().Insert や EntireRow.Insertで調べてみて下さい
併せてOffsetプロパティとResizeプロパティも調べて理解されると
使い勝手が増え良いと思います
No.4
- 回答日時:
No.3 改訂 もっと簡単に
Dim WS As Worksheet
Set WS = ActiveSheet
ENDR = WS.Range("A65536").End(xlUp).Row
For i = ENDR To 1 Step -1
If IsNumeric(WS.Range("A" & i).Value) And WS.Range("A" & i).Value >= 1 Then
n = WS.Range("A" & i).Value
Rows(i + 1 & ":" & i + n).Insert
End If
Next i
No.3
- 回答日時:
ここは半角スペースで字下げ出来ないので、全角スペースで字下げしてます。
Dim WS As Worksheet
Set WS = ActiveSheet
ENDR = WS.Range("A65536").End(xlUp).Row
For i = ENDR To 1 Step -1
If IsNumeric(WS.Range("A" & i).Value) And WS.Range("A" & i).Value >= 1 Then
n = WS.Range("A" & i).Value
For j = 1 To n
Rows(i + 1).Insert
Next j
End If
Next i
No.1
- 回答日時:
ざっくり 一例コードだけです
Sub test()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If IsNumeric(Cells(i, 1)) And Cells(i, 1) <> "" Then
Cells(i, 1).Offset(1).Resize(Cells(i, 1)).EntireRow.Insert
End If
Next
End Sub
ありがとうございます。
検証したところ、「0」という表示があると、エラー400になりました。
「0」を消したら、問題なく実行できました。
実行する前に、「0」を消す・非表示などにすれば、大丈夫です。
大変助かりました。感謝の気持ちでいっぱいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の条件に合致したセルを別のブックに貼り付け 1 2021/12/11 13:54
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Excel(エクセル) マクロ VBAを教えてください。 4 2021/12/14 14:07
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- 数学 失礼します。行列についての質問です。ある行列A 0 1 0 ( 0 0 1 ) の固有値を求め、対角 2 2021/12/18 09:23
- Visual Basic(VBA) Excelで、マウスで範囲を選択した列文字を選択した列の左の列に結合させるVBAをご教授願います 1 2022/02/05 09:24
- Excel(エクセル) マクロを修正できないものか、統合シートについて 3 2021/12/07 09:26
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Visual Basic(VBA) エクセルのマクロを教えてください 4 2022/02/04 08:05
このQ&Aを見た人はこんなQ&Aも見ています
-
特定文字のある行の前に空白行を挿入したい
その他(Microsoft Office)
-
Excelで、あるセルの値に応じて行を自動挿入したい
Visual Basic(VBA)
-
エクセル マクロで数値が変った時行挿入できますか
Excel(エクセル)
-
-
4
特定の条件の時に行を挿入したい
Excel(エクセル)
-
5
特定の文字を条件に行挿入とそこからセルデータを追加するVBAについて
Visual Basic(VBA)
-
6
Excelで一行おきに2行の空白行を挿入したい
その他(Microsoft Office)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
9
■VBAで条件による行挿入方法
Visual Basic(VBA)
-
10
エクセルVBA、特定条件で行を追加
Visual Basic(VBA)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
エクセルVBAで不一致に空白セルを挿入
Excel(エクセル)
-
13
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
14
VBAで検索して指定の位置に行を挿入したい
Visual Basic(VBA)
-
15
VBA 空白行に転記する
Visual Basic(VBA)
-
16
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
17
VBAで特定の文字を探して隣のセルに色を付けたい
Excel(エクセル)
-
18
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
19
Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです
Visual Basic(VBA)
-
20
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
VBAで特定の文字を探して隣のセ...
-
お店に入るために行列に並んで...
-
エクセル(勝手に太字になる)
-
エクセルで参照値の隣のセルを...
-
EXCELで 一桁の数値を二桁に
-
エクセル 会社名 あいうえお順
-
PowerPointで表の1つの列だけ...
-
B列の値がA列にあるかを調べる関数
-
エクセル関数の質問。
-
条件付の差込印刷をしたいので...
-
Excelで、A列にある文字がB列...
-
【追加】【マクロ】元データか...
-
【VBA】【マクロ】 指定の条件...
-
エクセルでjanコードから、企業...
-
このようなエクセルの関数の組...
-
エクセル サムイフ関数の合計...
-
右クリックメニューの表示よう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
EXCELで 一桁の数値を二桁に
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
エクセル(勝手に太字になる)
-
エクセル 文字数 多い順 並...
-
Excelで半角の文字を含むセルを...
-
「B列が日曜の場合」C列に/...
-
エクセルで、列の空欄に隣の列...
-
Excel 文字列を結合するときに...
-
Excel、市から登録している住所...
-
【VBA】特定列に文字が入ってい...
-
エクセルのセル内の文字の一部...
-
エクセル 同じ値を探して隣の...
-
お店に入るために行列に並んで...
-
エクセルの並び変えで、空白セ...
-
文字列に数字を含むセルを調べたい
-
エクセルの項目軸を左寄せにしたい
おすすめ情報