[[20210618121806]] 『規則性のない分類わけ』(a) ページの最後に飛ぶ

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

 

『規則性のない分類わけ』(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 >


[[20210617164014]]に類似した課題ですね。
(白茶) 2021/06/18(金) 12:41

[[20210617164014]]こちらの質問の仕方が悪いと思ったため質問しなおさせていただきました。
(a) 2021/06/18(金) 12:46

あー。なるほど。同じ方でしたか。
(参考になるかと思っての案内のつもりでした)
(白茶) 2021/06/18(金) 12:48

 __|___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


白茶さんありがとうございます。
この方法で少し試してみます。
本当にありがとうございます。
(a) 2021/06/18(金) 12:51

 (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.