[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル内の数だけ セルを縦にコピーする方法 』(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.