[[20130511131007]] 『条件に該当する複数セルの中で、2番目以降のもの』(木葉) ページの最後に飛ぶ

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

 

『条件に該当する複数セルの中で、2番目以降のものを抽出』(木葉)
 WinXP、2003
 こんにちは。お世話になっております。
    A   B
 01 愛知 豊田市
 02 愛知 豊川市
 03 京都 京都市 
 04 京都 舞鶴市
 05 京都 城陽市
 上のように、A列に都道府県名、B列に市町村区名が入力された表を作りました。 実際の行数は2000行弱です。

 この表から、あるセル(F6)に市町村区名を入力すると、該当する、またはその文字を含む(以下「該当するセル」)市町村区名に対応する
都道府県名が2つ下のセルに出てくる、というものを作成したいのですが、

 ・まず、F7には、F6で入力したものに該当するセルがいくつ該当するか調べる、という関数式を入力しております。

 ・そしてF8には、F7の式で検索した結果、「1件だけ」該当するセルがあった場合だけ、
その都道府県名を返す、という式を入力しております。

 ◆ここからが、教えていただきたい箇所なのです

F9以降に、該当するセルが2件以上あった場合に、該当数の分の都道府県をすべて表示させ、
G9以降には、それに対応する市町村区名を表示させたいのですが、可能な操作でしょうか?

 F6以降は、以下のようなようなイメージです
    F       G
 06 [ 豊 ]
 07 2件あります
 08 愛知     豊田市  
 09 愛知     豊川市
 10
 もしよろしければ御教示お願いします

	A	B	C
[1]	KEY	都道府県市区町村
[2]	1	愛知	豊田市
[3]	2	愛知	豊川市
[4]	2	京都	京都市
[5]	2	京都	舞鶴市
[6]	2	京都	城陽市
 
上記リストでKEY列に下記のような式を入れておきます。
=MAX($A$1:A1)+ISNUMBER(FIND($F$6,C2))
 
後はVLOOKUP関数で1や2を検索できますね!
(みやほりん)

 >みやほりん様

ご回答ありがとうございます!

試させていただいたところ、全ての値が0になってしまうのですが・・・

式の内容がしっかり理解できていないので、

改善策が分からないです。

申し訳ないですが、再度お教えいただければと思います(・・`)

【追記】質問文に記載していなかったのですが、都道府県名と市区町村名は関数で入力されています。
もしかすると、それが原因だったりするのでしょうか?

※会社のPCを利用しており、家にPCがない状況なので、
16:30以降回答下さった方は、申し訳ないですが、月曜日にお返事となってしまいます。

ご了承下さいませ

(木葉)


 関数やなしにフィルタオプションではダメなんですかね?
 使ったことないんやったら、調べて一度試してみてください。
 
 
 とりあえず関数で抽出

 > 試させていただいたところ、全ての値が0になってしまうのですが・・・ 

 これはA列の話?
 該当するものがあるのに全部「0」になるってこと?

 もう1回よく確認して原因を突き止めてください。
 市町村が数式の結果とか関係ないと思いますよ。 
 
 
 F7(件数)にどんな数式を入れてるのか知りませんけど
 ↓ にしてください。

 F7 =COUNTIF(C2:C2000,"*"&F6&"*")    ※13/05/12 9:26 B2:B2000 → C2:C2000 に修正

 表示形式をユーザー定義で 0"件" 

 件数が表示されますか?
 F7が「0件」やないのに、それでもA列は全部「0」ですか?
 
 
 > =MAX($A$1:A1)+ISNUMBER(FIND($F$6,C2))
 
「0」にしかならないことと関係ありませんけど
 これなんでMAX関数を使ってるんでしょうね?

 A2 =N(A1)+ISNUMBER(FIND($F$6,C2))
 または
 A2 =N(A1)+COUNTIF(C2,"*"&$F$6&"*")

 最終行までオートフィル

 それでも「0」にしかならないんやったら、いきなり本番データでなしに
 提示のサンプルデータで試してみましょう。
 
 
 A列がちゃんと表示されていれば

 F8 =IF($F$7<ROW(A1),"",VLOOKUP(ROW(A1),$A$2:$C$2000,2,FALSE))
 G8 =IF($F$7<ROW(A1),"",VLOOKUP(ROW(A1),$A$2:$C$2000,3,FALSE))

 または

 F8 =IF($F$7<ROW(A1),"",VLOOKUP(ROW(A1),$A$2:$C$2000,COLUMN(B1),FALSE))

 G8にコピー
 F8とG8を必要なだけ下にオートフィル
 
 
 ■あくまで参考程度に、作業列を使わない方法

 A列が都道府県、B列が市町村名
 1行目見出し、2行目からデータやとして

 F7 =COUNTIF(B2:B2000,"*"&F6&"*")

 表示形式をユーザー定義で 0"件" 

 F8 =IF($F$7<ROW(A1),"",INDEX(A:A,SMALL(INDEX(ISERR(FIND($F$6,$B$2:$B$2000))*2000+ROW($B$2:$B$2000),0),ROW(A1))))

 G8にコピー
 F8とG8を必要なだけ下にオートフィル

 (よみびとしらず)


 おはようございます

 >よみびとしらず様

 ご回答ありがとうございます!

 >関数やなしにフィルタオプションではダメなんですかね?

 私だけが使うのだったらそれでも構わないのですが社内の人たちと共有するにあたって、
 なるべく誰でも使えるように、とのことだったので、可能であれば関数でいきたいと考えております

 >F7 =COUNTIF(C2:C2000,"*"&F6&"*")

 私が入力している式は、一度検索をして、ない場合のエラー処理と、あった場合に「件あります」と表示されるようにしているのですが・・・(下の式)

 F7=IF(ISERROR(IF(MATCH(" ",$D$2:$D$2000,0),"ある","")),"ありません",COUNTIF(C1:C2000,"*"&$F$6&"*")&"件あります" )

 D列には、以下の式が入力されており、F6の文字列の有無を表示するようにしています

 =IF($F$6= "","",IF(COUNTIF(C1,"*"&$F$6&"*")," ",""))

 これってもしかすると、すごくめんどくさい事をしているのでしょうか・・・

 >A列がちゃんと表示されていれば

 よみびとしらず様の式を利用させていただいたところ、うまく表示されました!
 大変助かりました!

 回答してくださったお二方、ご協力いただき、ありがとうございました!

 (木葉)

 該当するものがあれば、F7に「○件あります」
 なければ「ありません」と表示させたいのやったら

 F7 =COUNTIF(C2:C2000,"*"&F6&"*")

 表示形式をユーザー定義で
 0"件あります";;"ありません"
 
 
 F6未入力の場合も考慮する必要があるんやったら

 F7 =IF(F6="",-1,COUNTIF(C2:C2000,"*"&F6&"*"))

 表示形式は上と同じ

 (よみびとしらず)


 >よみびとしらず様

何から何まで、ほんとにありがとうございます!

早速使わせていただきました(*−Н−*)

(木葉)


コメント返信:

[ 一覧(最新更新順) ]


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