[[20100408095722]] 『セル内の数だけ セルを縦にコピーする方法 』(marbin ジュニア) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内の数だけ セルを縦にコピーする方法 』(marbin ジュニア)


|  A  |    B    |  C  |

むさし君|君代ちゃん|2|

むさし君|千里ちゃん|4|

あきら君|弘子ちゃん|1| 

と言うデータがあるとします。

末端の数だけ最初の二つのセルをコピーする機能がほしいです。

むさし君|君代ちゃん|

むさし君|君代ちゃん|

むさし君|千里ちゃん|

むさし君|千里ちゃん|

むさし君|千里ちゃん|

むさし君|千里ちゃん|

あきら君|弘子ちゃん|

もしくは

むさし君|君代ちゃん|1|

むさし君|君代ちゃん|2|

むさし君|千里ちゃん|1|

むさし君|千里ちゃん|2|

むさし君|千里ちゃん|3|

むさし君|千里ちゃん|4|

あきら君|弘子ちゃん|1|

その数だけID番号になるように自動に入力してくれる

機能もできたら持たせたいです。

わかりにくい説明で申し訳ございませんが

なにとぞご教授お願いします。m(__)m


 以前に、類似問題を関数でやった人が居た覚えがあるのですが、忘れました。
 安易とは思いましたが、マクロでやるならこんな感じかな。という一例です。
 ご参考まで・・・ (検証不十分な自信アリ。精査されたし)

 Sub test()
    Dim Ary1() As Variant, Ary2() As Variant
    Dim r As Long, Ra As Range
    Dim i As Long, j As Long
    Dim x As Long, y As Long

    Const FROM_RANGE As String = "A1:C4" '← 読み込みデータ範囲を指定
    Const TO_HEAD As String = "F2"       '← 出力先の先頭セルを指定

    Set Ra = Range(FROM_RANGE)
    Ary1 = Ra.Value
    j = 1
    For r = 1 To Ra.Rows.Count
        i = i + Ary1(r, 3)
        ReDim Preserve Ary2(1 To 3, 1 To i)
        y = 0
        For x = j To i
            y = y + 1
            Ary2(1, x) = Ary1(r, 1)
            Ary2(2, x) = Ary1(r, 2)
            Ary2(3, x) = y
        Next
        j = i + 1
    Next
    Set Ra = Range(TO_HEAD)
    Ra.Resize(i, 3) = Application.Transpose(Ary2)
 End Sub

 (白茶)


 これかな〜。
[[20081028232828]]『行展開について』(rooo)
[[20071109141738]]?『n個コピーするには?』(つかけん)

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.