エクセルのマクロでこんなことは出来るのでしょうか。
A B
1 東京 1
2 大阪 3
3 札幌 2
4 福岡 1
5 横浜 2
上記のような表をマクロの処理で下記のように書き換えることは出来るでしょうか。
A B
1 東京 1
2 大阪 1
3 大阪 1
4 大阪 1
5 札幌 1
6 札幌 1
7 福岡 1
8 横浜 1
9 横浜 1
B列に入ってる数字の分だけ行を作りたいのです。
(B列の数字マイナス1行を挿入する形になります)
書き換えがややこしければ、別の場所に作り直してもかまわないので
お願いします。
No.1
- 回答日時:
Sub Kakikae()
' 初期設定
Dim A() as String,B() as Integer,Counter as Integer, _
i as Integer,j as Integer,Gyou as Integer
Redim A(0),B(0)
' データの取得
Do
' B行が空の場合はループから出る
A(0)=Range("B2").Offset(Counter,0)
B(0)=Range("C2").Offset(Counter,0)
If A(0)="" Then
Exit Do
End If
' 配列の拡張
Counter=Counter+1
Redim Preserve A(Counter),B(Counter)
' データ格納
A(Counter)=A(0):B(Counter)=B(0)
DoEvents
Loop
' 書き込み
For i=1 to Counter
For j=1 to B(i)
' 行番号
Gyou=Gyou+1
Range("A1").Offset(Gyou,0)=Gyou
' A,B
Range("B1").Offset(Gyou,0)=A(i)
Range("C1").Offset(Gyou,0)=1
DoEvents
Next j
Next i
End Sub
ありがとうございます。
御礼が遅くなって申し訳ありません。
やってみましたが、うまく動かず、私には難しすぎました。
勉強しなおしてきます。
No.2
- 回答日時:
行挿入・削除は、そのロジックを良く考えて、作らないと、自分の実行いている行や、追加すべき行を混乱するものになりがちです。
下記は、現在データの下に増加させて、現在データはそのままにして、その点の判りにくさを避けています。
Sub test01()
d = Range("A65536").End(xlUp).Row
' MsgBox d
k = d + 1
For i = 1 To d
Cells(i, "C") = i
If Cells(i, "B") = 1 Then
Else
For j = 1 To Cells(i, "B") - 1
Cells(k, "A") = Cells(i, "A")
Cells(k, "B") = 1
Cells(k, "C") = i
k = k + 1
Next j
Cells(i, "B") = 1
End If
Next i
End Sub
最下行dを求め、増やすのはその下の部分の行にして、ポンインタK
を使って1行増追加するごとにKも1足してます。
あと終了後C列でソートします。
結果
東京11
大阪12
大阪12
大阪12
札幌13
札幌13
福岡14
横浜15
横浜15
B、C列が不要なら削除。
Range("B:C").EntireColumn.Delete
をコードの最後(end SUBの直前)に入れておく。
ありがとうございます。
御礼が遅くなって申し訳ありません。
データを増やして並べ替えとはとても思いつきませんでした。
色々な方法があるのですね。勉強になりました。
No.3ベストアンサー
- 回答日時:
こんばんは。
これは、記録マクロの延長上にあると思いますから、下から取れば、簡単に出来てしまうと思います。
Sub RowsEntries()
Dim i As Long
Dim j As Long
Application.ScreenUpdating = False '画面の切り替えを止める
For i = Range("B65536").End(xlUp).Row To 1 Step -1
j = Cells(i, 2).Value 'B列の値を取る
If j > 1 Then
Cells(i, 1).Resize(, 2).Copy
Cells(i, 1).Resize(j - 1).Insert Shift:=xlDown
Cells(i, 2).Resize(j).Value = 1
End If
Next i
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
ありがとうございます。
御礼が遅くなって申し訳ありません。
下から上へ行く方法があるとは。
とてもシンプルで分かりやすい方法ですね。
記述の短さと分かりやすさで20pt付けさせていただきました。
また勉強しなおしてきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 地域研究 日本の三大都市は、東京と大阪と、もう一つはどこ? 五大都市だと、東京、大阪と、残り三都市は福岡、名古 5 2022/07/15 09:43
- その他(宿泊・観光) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡市福岡市 3 2023/01/29 18:14
- その他(国内) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡県福岡市 2 2023/01/27 22:00
- その他(宿泊・観光) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡県福岡市 3 2023/02/12 10:22
- その他(宿泊・観光) 福岡市 横浜市 神戸市 大阪市 京都市 札幌市 名古屋市 都会順に並び替えるとどうなりますか? 3 2023/03/28 14:25
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- Visual Basic(VBA) A列と完全一致したセルとその右隣だけを残す 3 2023/06/21 05:01
- サッカー・フットサル 北海道コンサドーレ札幌の話 1 2022/07/24 21:11
- 地理学 日本の各都市。海外でどれくらい認知されてますか? 4 2022/07/21 19:25
- サッカー・フットサル 北海道コンサドーレ札幌の話 2 2022/05/06 19:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本へ架ける国際電話のcountry...
-
関西弁はなぜ人を不快にさせる...
-
くら寿司WiFiパスワード分から...
-
キャバ嬢です。 お客様が好きに...
-
玉露のアクセント 教えてください
-
複数列の平均を出したい
-
「無理しないでね」って意味だ...
-
「ばびる」の使い方
-
呼び出しの「元」と「先」って...
-
明日は大阪へ気をつけて行って...
-
贈呈式の司会進行の原稿につて
-
「いける」は関西弁ですか?
-
関西弁で言う「ええしの子」の...
-
就活で転居の理由を聞かれたら?
-
「自~至~」について
-
風俗の大阪のアポロビルみたい...
-
関西のノリがほんとにしんどいです
-
話してる時に『〇〇〇〇じゃな...
-
大阪弁の「かんにんなー」の意味
-
大阪人ってどうして威圧的なん...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関西弁はなぜ人を不快にさせる...
-
くら寿司WiFiパスワード分から...
-
日本へ架ける国際電話のcountry...
-
キャバ嬢です。 お客様が好きに...
-
大阪に合わない
-
大阪人ってどうして威圧的なん...
-
JRで神戸駅から大阪まで 快...
-
「無理しないでね」って意味だ...
-
大阪人ですが、大阪人が嫌いで...
-
贈呈式の司会進行の原稿につて
-
友達(東京人)が大阪が合わな...
-
大阪が嫌いになりだした
-
「○○さんの家」という意味で「...
-
複数列の平均を出したい
-
関西のノリがほんとにしんどいです
-
電信棒という表現は方言ですか?
-
関西弁で言う「ええしの子」の...
-
電話番号の最初の3桁や4桁って...
-
風俗の大阪のアポロビルみたい...
-
呼び出しの「元」と「先」って...
おすすめ情報