[[20170510164109]] 『表の中の個数をまとめる』(ゆんぼ) ページの最後に飛ぶ

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

 

『表の中の個数をまとめる』(ゆんぼ)

このような表があります。

 日     東京        神奈川      千葉        埼玉
4月1日 トラック0.5  軽自動車    バン0.5     バン
4月2日 乗用車       軽自動車    バン        乗用車
4月3日 乗用車0.5    軽自動車    トラック    乗用車
4月4日 乗用車0.5    乗用車      トラック    軽自動車0.5
4月5日 乗用車       乗用車      トラック0.5 軽自動車0.5

重複のないリストを作成して、COUNTIFで個数を出すと以下のような結果になりました。

トラック0.5 2
軽自動車0.5 2
乗用車 6
トラック 2
乗用車0.5 2
軽自動車 3
バン 2
バン0.5 1

この0.5は半日を表しております。
出来ればトラックを3、軽自動車を4と言うようにまとめる関数などありますでしょうか。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


	G		H
1	トラック0.5		
2	軽自動車0.5		
3	乗用車		7
4	トラック		3
5	乗用車0.5		
6	軽自動車		4
7	バン		2.5
8	バン0.5		
9			

 H1 =IF(RIGHT(G1,3)="0.5","",COUNTIF(B:E,SUBSTITUTE(G1,0.5,)&"*")-COUNTIF(B:E,G1&0.5)/2)
 下へコピー。
 
(GobGob) 2017/05/10(水) 17:17

 H1 =IF(OR(G1="",RIGHT(G1,3)="0.5"),"",COUNTIF(B:E,G1&"*")-COUNTIF(B:E,G1&0.5)/2)

 間違い訂正。
(GobGob) 2017/05/10(水) 17:22

Sub main()
    Dim dic, k, c As Range, r As Range
    Set dic = CreateObject("Scripting.dictionary")
    Range("H:I").Clear
    Set r = Range("A1").CurrentRegion
    For Each c In r.Resize(r.Rows.Count - 1, r.Columns.Count - 1).Offset(1, 1)
        dic(Replace(c.Value, "0.5", "")) = dic(Replace(c.Value, "0.5", "")) + IIf(c.Value Like "*0.5*", 0.5, 1)
    Next c
    Set c = Range("H1")
    For Each k In dic
        c.Resize(, 2).Value = Array(k, dic(k))
    Set c = c.Offset(1)
    Next k
End Sub
(mm) 2017/05/10(水) 18:08

GobGobさん、mmさん

ご報告が遅くなり申し訳ありません。
希望通りの結果になりました。
本当にありがとうございます。
(ゆんぼ) 2017/05/11(木) 10:23


コメント返信:

[ 一覧(最新更新順) ]


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