[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『A列の値が変わったら改行してコピー』(WSぽこ)
こんばんは。
ご質問させてください。
A B … AA AB AC 1 1 A 2 1 B 3 2 A 4 2 A 5 2 X 6 3 B
というA,B列から成るデータがあり、
A列の値が変わるまで、AA1からAB1、AC1へ横にB列の内容をコピーします。
A B … AA AB AC 1 1 A A B 2 1 B 3 2 C 4 2 D 5 2 E 6 3 F
A列の値が前行と変わっていたら改行し、AA2からAB2,AC2にまたB列の内容をコピーします。これをA列がNullになるまで繰り返します。
A B … AA AB AC 1 1 A A B 2 1 B C D E 3 2 C F 4 2 D 5 2 E 6 3 F
頭の中ではやりたいことは浮かぶのですが、コードに起こすとなると難しく…
ご教授いただけないでしょうか。
よろしくお願いいたします。m(_ _)m
< 使用 Excel:Excel2010、使用 OS:Windows10 >
C列、D列を作業列として利用するとして
C1に
=COUNTIF(A$1:A1,A1)
を入力して下方向にフィル
D1に
=A1&"_"&C1
を入力して下方向にフィル
AA1に
=IFERROR(INDEX($A:$D,MATCH(ROW(A1)&"_"&COLUMN(A1),$C:$C,0),2),"")
を入力して右下にフィル
で出来ると思います。フィルする大きさは
行数はA列の最大値 =MAX(A:A)
列数はA列の最大重複数 =MAX(C:C)
を参考にすると良いと思います。
(名無し) 2018/08/08(水) 08:40
Dim r As Range, rr As Range Set r = Range("A1") Set rr = Range("AA1") Do While r.Value <> "" rr.Value = r.Offset(, 1).Value Set rr = IIf(r.Value = r.Offset(1).Value, rr.Offset(, 1), Range("AA" & rr.Offset(1).Row)) Set r = r.Offset(1) Loop End Sub (mm) 2018/08/08(水) 09:20
名無しさん、式の「$C:$C」は「$D:$D」では? また、 =IFERROR(INDEX($B:$B,MATCH(ROW(A1)&"_"&COLUMN(A1),$D:$D,0)),"") でも。 (ねむねむ) 2018/08/08(水) 16:41
最初はC1に=A1&"_"&COUNTIF(A$1:A1,A1) としていたのを、
あとから重複数確認も出来た方が良いかなとCとDに分割して直し忘れていたみたいです。
訂正ありがとうございます。
(名無し) 2018/08/08(水) 16:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.