[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『規則性のない分類わけ』(a)
質問失礼いたします
A列に1と2があり、
B列に1の場合は大分類、2の場合は例が載っています
A列 B列
1 本
2 桃太郎
2 ハリーポッター
2 星の王子さま
1 魚
2 サンマ
2 マグロ
1 果物
2 みかん
2 ブドウ
2 マンゴー
・
・
・
このデータを横に
A列 B列 c列 d列 e列
本 桃太郎 ハリーポッター 星の王子さま
魚 サンマ マグロ
果物 みかん ブドウ マンゴー
のようにしたいのですが、マクロや関数を調べてもそれっぽい内容が見当たらず途方に暮れています。
何かわかる方がおりましたらご教授お願いいたします。
< 使用 Excel:Office365、使用 OS:Windows10 >
__|___A____|______B_______|___C____|___D____|___E____|___F____|___G____|___H____|___I____|______J_______|_____K______|___L____ 1| 1|本 | 10000| 10000| | | | 0| 1| 2| 3| 2| 2|桃太郎 | 10000| 10001| | | 1|本 |桃太郎 |ハリーポッター|星の王子さま| 3| 2|ハリーポッター| 10000| 10002| | | 2|魚 |サンマ |マグロ | #N/A | 4| 2|星の王子さま | 10000| 10003| | | 3|果物 |みかん |ブドウ |マンゴー | 5| 1|魚 | 20000| 20000| | | | | | | | 6| 2|サンマ | 20000| 20001| | | | | | | | 7| 2|マグロ | 20000| 20002| | | | | | | | 8| 1|果物 | 30000| 30000| | | | | | | | 9| 2|みかん | 30000| 30001| | | | | | | | 10| 2|ブドウ | 30000| 30002| | | | | | | | 11| 2|マンゴー | 30000| 30003| | | | | | | | 12| | | | | | | | | | | |
C1=COUNTIF(A$1:A1,1)*10000 D1=C1+COUNTIFS(A$1:A1,2,C$1:C1,C1) H2=INDEX($B:$B,MATCH($G2*10000+H$1,$D:$D,0))
というイメージです。
(白茶) 2021/06/18(金) 12:49
(1) D1セル =FILTER(B1:B1000,A1:A1000=1)
(2) E1セル =TRANSPOSE(INDEX(B:B,MATCH(D1,B:B,0)+1):INDEX(B:B,IF(D2="",COUNT(A:A),MATCH(D2,B:B,0)-1))) E1セルの数式は下にコピーする
<結果図> 行 _A_ _______B_______ _C_ __D__ ___E___ _______F_______ ______G______ 1 1 本 本 桃太郎 ハリーポッター 星の王子さま 2 2 桃太郎 魚 サンマ マグロ 3 2 ハリーポッター 果物 みかん ブドウ マンゴー 4 2 星の王子さま 5 1 魚 6 2 サンマ 7 2 マグロ 8 1 果物 9 2 みかん 10 2 ブドウ 11 2 マンゴー
(半平太) 2021/06/18(金) 13:14
こんばんは! こちらは2列ですね?? こちらと↓と同じような考え方で、、、 [[20210617164014]] 『規則性のあるデータから任意のデータを抽出して横』(か) まぁ、、ついでで申し訳ないですけど、、マクロでよろしければ、、、 何かの参考になれば幸いです。。。
|[A] |[B] |[C] |[D] [1]|本 |桃太郎|ハリーポッター|星の王子さま [2]|魚 |サンマ|マグロ | [3]|果物|みかん|ブドウ |マンゴー
Option Explicit Sub てすと() Dim v As Variant Dim x() As Variant Dim y() As Variant Dim z() As Variant Dim q As Variant Dim i As Long Dim j As Long Dim n As Long Dim k As Long Dim 最大値 As Long v = Sheets("Sheet1").Range("A1").CurrentRegion.Resize(, 2).Value For i = LBound(v, 1) To UBound(v, 1) If v(i, 1) = 1 Then ReDim Preserve x(n) ReDim Preserve y(n) x(n) = v(i, 2) n = n + 1 k = 0 ElseIf v(i, 1) = 2 Then ReDim Preserve z(k) z(k) = v(i, 2) k = k + 1 y(n - 1) = z If 最大値 < k Then 最大値 = k End If Next ReDim q(1 To n, 1 To 最大値 + 1) For i = LBound(q, 1) To UBound(q, 1) If Not IsEmpty(y(i - 1)) Then z = y(i - 1) q(i, 1) = x(i - 1) For j = LBound(z) To UBound(z) q(i, j + 2) = z(j) Next End If Next With Sheets("Sheet2") .Cells.Clear .Range("A1").Resize(UBound(q, 1), UBound(q, 2)).Value = q End With Erase v, x, y, z, q End Sub (SoulMan) 2021/06/18(金) 20:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.