ここから本文です

EXCELについて質問です。 数式でもマクロでも構いません。 下記、エクセルの表示...

アバター

ID非公開さん

2019/3/2712:37:38

EXCELについて質問です。
数式でもマクロでも構いません。
下記、エクセルの表示方法を変えたいです。
ご教授ください。

A列からL列までそれぞれ下記の項目があります。

日付/時刻 金額 人数 カテゴリー1 カテゴリー2 カテゴリー3・・・カテゴリー9迄
2019/3/17 10,000 2 ・・・・・・

上記のようなエクセルで、人数が1ならそのまま、人数が2ならその行の下に1行空白行を挿入、
人数が3ならその行の下に2行空白行を挿入、人数が4ならその行の下に3行空白行を挿入といっったように、人数マイナス1の数の行を挿入したいです。

分かりにくい質問で申し訳ございません。

宜しくお願い致します。

閲覧数:
46
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

まーさんさん

2019/3/2716:19:22

これでいけるみたいです。

Sub Sample2()
Dim i As Long
For i = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1
Rows(i + 1 & ":" & i + Cells(i, 3) - 1).EntireRow.Insert
Next i
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tai********さん

2019/3/2719:31:33

配列を使ってみました。

Sub test()
Dim i As Long, j As Long, k As Long, rstr As String, R, C(), D, Title
Title = ActiveSheet.Range("A1:L1").Value
ReDim C(0)
C(0) = "@"
k = 1
For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row
rstr = WorksheetFunction.Rept(Cells(i, 1).Row & ",", Cells(i, 3))
R = Split(rstr, ",")
For j = 0 To UBound(R) - 1
ReDim Preserve C(k)
C(k) = R(j)
k = k + 1
Next
Erase R
Next
ReDim D(1 To UBound(C), 1 To 12)
For i = 1 To UBound(C)
If C(i - 1) <> C(i) Then
For j = 1 To 12
D(i, j) = Cells(C(i), j)
Next
End If
Next
Sheets.Add
Range("A1").Resize(, 12) = Title
Cells(2, 1).Resize(UBound(D), 12) = D
Columns("A:L").AutoFit
End Sub

fro********さん

2019/3/2713:51:06

マクロの回答になります。

Sub test()
Dim Cnt As String, Lrow As Long, i As Long
Lrow = Range("A" & Rows.Count).End(xlUp).Row
For i = Lrow To 2 Step -1
Cnt = Cells(i, 3).Value
If IsNumeric(Cnt) = True Then
If Cnt > 1 Then
Cells(i + 1, 1).Resize(Cnt - 1).EntireRow.Insert
End If
End If
Next
End Sub

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる