[[20190113123652]] 『項目と文字列が一致したときリストに丸印をつけ、』(クロウ) ページの最後に飛ぶ

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

 

『項目と文字列が一致したときリストに丸印をつけ、行を整形したい』(クロウ)

お世話になっております。
Bの列にC〜Hまでのリストの項目と一致するものがあった場合、その欄に○印をつけて、かつ1行ずつにまとめたいです。
例えば下記のようなリストが有った場合、
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ __ _ _ _ _ _ _ _ __ _ _ _

A            |B       |C   |D  |E  |F |G |H |

                                        |Switch |3DS |PS4 |ACT|RPG|STG
スーパーマリオブラザーズ  ACT
             マリオ
             任天堂
                          switch
スマブラスペシャル       ACT
                          amiibo対応
                          オンライン対応
                          switch
ペルソナ Q2              RPG
                          CERO「B」
                          アトラス
                          3ds
ポケットモンスター        RPG
                          通信プレイ
                          任天堂
                          3DS
エースコンバット7       PS4
                          STG
                          CERO「A」
キングダムハーツ3        PS4
                          RPG 
パワプロ                  Vita
                          スポーツ
_ _ _ _ _ _ _ _ _ _ _ _  _ _ _ _ _ __ _ _  _ __ _ _ _ _ _ _ _ __ _ _ _

これを

A            |B       |C   |D  |E  |F |G |H |

                                        |Switch |3DS |PS4 |ACT|RPG|STG
スーパーマリオブラザーズ                   ○               ○ 
スマブラスペシャル                        ○               ○
ペルソナ Q2                                      ○            ○
ポケットモンスター                                ○            ○
エースコンバット7                                    ○           ○
キングダムハーツ3                                     ○       ○
パワプロ
_ _ _ _ _ _ _ _ _ _ _ _  _ _ _ _ _ __ _ _  _ __ _ _ _ _ _ _ _ __ _ _ _

このような感じにしたいです。
作業後はB列の文字列は削除されているとありがたいです。
ご教示いただけると幸いです。

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


こんな感じでできませんか

1)A列の空白セルをジャンプ機能で選択
2)=A2と入力し、ctrl+enter
3)C3に、=IF(COUNTIFS($A:$A,$A2,$B:$B,C$1)=1,"○","")と入力
4)右方向、下方向にフィルコピー
5)数式を値貼り付けで変換
6)A列基準で重複の削除
7)B列を削除

(マナ) 2019/01/13(日) 14:49


出来ました!ありがとうございます、助かりました。
(クロウ) 2019/01/13(日) 19:02

 別案で。

 C2 =IF($A2="","",IF(SUMPRODUCT((LOOKUP(ROW(A$2:A$24),ROW(A$2:A$24)/($A$2:$A$24<>""),$A$2:$A$24)=$A2)*($B$2:$B$24=C$1))>0,"○",""))
 範囲コピー。

 C列〜範囲 値貼り付け。

 A列基準に並び替え(2行目から)

 A列空白行を削除
(GobGob) 2019/01/14(月) 08:47

GobGobさん
ありがとうございます。
並び替えをするとリストの順序が変わってしまうのですが、順序を変えずにやる方法はありますでしょうか?すみません、よろしくお願いします。
(クロウ) 2019/01/15(火) 11:17

 数式入力後

 >C列〜範囲 値貼り付け。

 です。

(GobGob) 2019/01/15(火) 11:33


GobGonさん
ありがとうございます。
○印の結果の方は大丈夫なのですが、左側の商品名の部分の並びを変えたくないのです。
例えば

エースコンバット

パワプロ

キングダム

と並んでいたとしたら、A列基準に並び替えの作業をすると

エースコンバット
キングダム
パワプロ

となってしまうのです。そうならずに済む方法はありますでしょうか?よろしくおねがいします。

(クロウ) 2019/01/15(火) 11:45


GobGobさん
すみません、空白セルを検索して行全体を削除したら出来ました。
おそらくこれで大丈夫だと思います。本当にありがとうございました。
(クロウ) 2019/01/15(火) 11:49

GobGobさん
たびたびすみません。やはり少し問題が生じてしまいました。
後出しのような形になって申し訳ないのですが、商品名に同名別製品があった場合そちらにも前の商品と同じところに○がついてしまいます。
例えば、パワプロのPS4版とvita版があった場合両方の製品の行にPS4、vita、スポーツ、という項目に○がついてしまいます。
PS4版ではPS4とスポーツ、vita版ではvitaとスポーツの項目のみに○をつける方法はありますでしょうか?
          ps4  vita  スポーツ
パワプロ スポーツ ○       ○
     ps4
パワプロ スポーツ     ○   ○
     vita

このような形にしたいです。よろしくお願いします。
(クロウ) 2019/01/15(火) 12:28


追記ですが、実際はこのように同名別製品が続くことはないと思います。
パワプロ

マリオ

パワプロ

のような並びになっていると思います。
どなたかご教示いただけると幸いです。
(クロウ) 2019/01/15(火) 17:06


	A	B	C	D	E	F	G	H	I	J
1					Switch	3DS	PS4	ACT	RPG	STG
2	1	2-1	マリオ	ACT	○			○		
3	1	#N/A		マリオ						
4	1	#N/A		任天堂						
5	1	1-1		switch						
6	2	#N/A	ぷよ2	スポーツ			○			
7	2	1-2		PS4						
8	3	3-3	ゼルダ	RPG		○			○	
9	3	#N/A		CERO「B」						
10	3	#N/A		アトラス						
11	3	1-3		3ds						
12	4	1-4	ぷよ2	3ds		○				
13	4	#N/A		スポーツ						

 A:B列 作業列

 A2 =IF(C2="",A1,MAX(A$1:A1)+1)
 B2 =IF(COUNTIF(E$1:G$1,D2),1,MATCH(D2,$H$1:$J$1,0)+1)&-A2

 A2:B2 下へコピー。

 E2 =IFERROR(IF($C2="","",IF(INDEX($D:$D,MATCH(MAX(1,COLUMN(A2)-2)&-$A2,$B:$B,0))=E$1,"○","")),"")

 E2 範囲コピー。

 E列 〜 範囲 値コピー。
(GobGob) 2019/01/15(火) 17:50

有難うございます。
ただ、やはりうまくいきませんでした。というよりこのリストのようなデータでやるとうまくいくのですが、実際のデータでやるとうまくいきません。
実際のデータでは作業列のA:B列も含めるとT列まであります。
そのためか数式を貼り付けたセルをコピーすると半分の列ぐらいまでしか反映されません。
GobGobさんの書いてくださった数式にE$1:G$1や$H$1:$J$1といったところがあるのでその辺りを直せば良いのかなと思ったのですが、調べてもなかなか分かりませんでした。
T列まである場合の書き方を教えていただけると幸いです。

(クロウ) 2019/01/15(火) 23:07


 > B2 =IF(COUNTIF(E$1:G$1,D2),1,MATCH(D2,$H$1:$J$1,0)+1)&-A2

 COUNTIF の E1:G1 は 「機種」の範囲
 MATCH   の H1:J1 は 「ゲーム種類」の範囲

 >E2 =IFERROR(IF($C2="","",IF(INDEX($D:$D,MATCH(MAX(1,COLUMN(A2)-2)&-$A2,$B:$B,0))=E$1,"○","")),"")

 MATCH の COLUMN(A2) の A2 は「変更しない」
 MATCH の COLUMN(A2)-2 の -2 は 「機種の種類数-1の数値」で設定
 
(GobGob) 2019/01/16(水) 08:49

有難うございます。
>COUNTIF の E1:G1 は 「機種」の範囲
MATCH の H1:J1 は 「ゲーム種類」の範囲

ということは機種、ゲームの種類、というように1行に複数入れるのではなくps4,switch,vita,3dsのようなゲーム機種だけの行にした場合、列がT列まであるとして
B2 =IF(COUNTIF(E$1:L$1,D2),1,MATCH(D2,$M$1:$T$1,0)+1)&-A2のようにCOUNTIFとMATCHのそれぞれの範囲は全体の範囲があっていれば適当で良いのでしょうか?
(クロウ) 2019/01/16(水) 09:05


 そちらの本当の事情がわからんのでアレですが、

 それぞれ範囲を多めに設定してもOKかと。
(GobGob) 2019/01/16(水) 09:24

ありがとうございます!
色々教えてくださって本当に助かりました。
GobGobさんに教えていただいたものでもう一度試してみたいと思います。
(クロウ) 2019/01/16(水) 09:30

GobGobさん
あのあと試したのですがうまく行きませんでした。
やはりCOUNTIFとMATCHの範囲が適当だったのがまずかったのでしょうか?

意味のあるリストではありませんが、
E1〜T1まで横にps1,ps2,ps3…とやってT1にps16となる項目を作って、
C2に「あああ」と入れ、以降C16まで1行ずつ空けて「いいい」「ううう」というように文字を入れ、D2から縦にps1,ps2,ps3…ps16と入れてあるリストです。

「あああ」の右がps1、ps2なのでps1とps2に○がつくはずですがps1の部分にしか付きません。
しかし「おおお」あたりから急に2つずつつくようになります。
何が原因かわかりますでしょうか?

A B   C   D  E  F  G  H
           ps1 ps2 ps3 ps4
1 1-1 あああ ps1 ○ 
1 1-1     ps2
2 2-2 いいい ps3      ○
2 2-2     ps4

このような感じになります。

うまく動作する場所はB列の数字が4-6、5-6のように別々の数字が並んでいるのですが、失敗するところは1-1、1-1と同じ数字が並んでいるのでそれも関係してるのかなとは思うのですが修正までたどり着けませんでした。よろしくおねがいします。

(クロウ) 2019/01/18(金) 18:21


コメント返信:

[ 一覧(最新更新順) ]


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