• ベストアンサー

複数の種類の語句のセル内検索

A列にキーワード、B列にその説明が入ってるとします    A    B                  C 1 美しい 美について形容した物 2 愛   感情の一つに付けられた名前 3 投げる 物を動かす動作の一つ 4 ~の  他の品詞の末尾に付く物 5 早い  速度を表すときの形容詞 6 …    …                  … … と言う具合に 勿論B列の内容には十分配慮するとして このB行の文字の中に"形容"・"名"・"動"・"尾"…等の物があるか調べ 有ればそれぞれ同一行のC列にそれぞれ"形容詞"・"名詞"・"動詞"・"接尾語"…などと表示させ 無ければ"-"を表示させたいのですが IF構文を使えば取り敢えずは出来そうですがC行に表示させる種類が多い場合 文が長くなるし、それに連れて処理も重くなってしますので限界があると思うのですね また、マクロはそれと判らない人に白い目で見られて 「安全管理上問題有り」と言われるので出来れば使いたくないのです 更に、他のセル・Bookは使用を許されていません 上手くできる方法はありますでしょうか?

  • Nouble
  • お礼率91% (1698/1856)

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

=CHOOSE(SUMPRODUCT(COUNTIF(B1,{"*形容*","*名*","*動*","*尾*"})*{1,2,3,4})+1,"-","形容詞","名詞","動詞","接尾詞") ※CHOOSE関数の設定上設定できる品詞は最大29個(なしの"-"を含む)です。

Nouble
質問者

お礼

早速のご回答有難う御座います 感服しました 正に「我、強者とまみえん」の瞬間でした 恐れ入りました 近年希にみないブレイクスルーだと思います 私なりに後学にと 頂いたこの構文(慣用句?)を分解して 「SUMPRODUCT」の中の「COUNTIF」を外に出したら(参照にしたら) 第1列の場合1が10に変わってしまいました しかも引数が1個しかないし… なぜに?? ヘ(~~; 更に「COUNTIF」に「{ }」が使われているのにも驚きました 全く意味不明、未知との遭遇です やはりそもそもExcel流の配列の捕まえ方が判っていない性なのでしょうか? どう考えても 「=SUMPRODUCT(COUNTIF(B1,{"*形容*","*名*","*動*","*尾*"})*{1,2,3,4})」 に掛けられた魔法が解けません 出来れば解説いただければ助かるのですが 宜しくお願い致します <(_ _)>

Nouble
質問者

補足

戸頃で G1に1、G2からG6まで0を入れても 1に1、G1からG6まで1を入れても G1から順にG6まで1から6まで入れても =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},$G$1:$G$5)*{1,2,3,4}) としたところちゃんと動作しました が =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},{1,1,1,1})*{1,2,3,4}) とか =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},{1,1,1,1,1})*{1,2,3,4}) とか =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},{1;1;1;1})*{1,2,3,4}) とか =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},{1;1;1;1;1})*{1,2,3,4}) とか =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},$G$1:$G$4)*{1,2,3,4}) とか =SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},$G$1:$G$6)*{1,2,3,4}) とか 全て文字列として認識しました 全く意味不明…

その他の回答 (7)

  • rin01
  • ベストアンサー率43% (33/76)
回答No.8

何度もゴメンナサ~イ。。。!! そそっかしいので 間違えたとこがありましたから 訂正しておきます。。。 ★式は、C1 じゃなくて E1 ですね。。 ★式の中の  > "形容詞動詞"}, は、"形容動詞"  ですね。。 ★ >C列は、残しておくんでしょうか? >C列があるのでしたら 今回B列が増えましたので D列の間違いです。 以上、訂正でした。。。。Rin  

  • rin01
  • ベストアンサー率43% (33/76)
回答No.7

追伸で~す。。。♪ NO6で書いた式では、不十分かも? まちがえて違うB列の行へ M 入れても形容動詞に なってしまいま~すので。。。 こちらの方がいいですね。。 チョット、追加して C1: =INDEX({"-","形容詞","名詞","動詞","接尾詞","形容詞動詞"},MAX((B1="M")*COUNTIF(C1,"*形容*")*5,INDEX(COUNTIF(C1,{"*形容*","*名*","*動*","*尾*"})*COLUMN(A:D),))+1) 下にコピーです。 ★ただ、理解力がなくてすみませんが C列は、残しておくんでしょうか? C列があるのでしたら、 MAX((B1="M")*COUNTIF(C1,"*形容*")*5 の部分は MAX((B1="M")*(C1,"形容詞)*5 でもいいですね。。。。 失礼しました~。。。。Rin~♪♪

  • rin01
  • ベストアンサー率43% (33/76)
回答No.6

こんにちは~♪ Rinで~す。。。 ★形容詞と形容動詞の違いとか、私はぜんぜんわかりません。。  B列に、 M と入力した時だけ  提示された表 ↓ の様にE列に(形容動詞)表示するには     A    B  C                   D     E 1   美しい    美について形容した物     形容詞  形容詞 2   愛      感情の一つに付けられた名前 名詞   名詞 3   投げる    物を動かす動作の一つ     動詞   動詞 4   ~の     他の品詞の末尾に付く物    接尾詞  接尾詞 5   早い  M   速度を表すときの形容詞   形容詞  形容動詞 E1: =INDEX({"-","形容詞","名詞","動詞","接尾詞","形容詞動詞"},MAX((B1="M")*5,INDEX(COUNTIF(C1,{"*形容*","*名*","*動*","*尾*"})*COLUMN(A:D),))+1) 下にコピー。 で、いかがでしょうか? 他の式は、考えていませんが~。 ★それから。。。 >Excel2000環境で配列を扱うCOUNTIFが上手く動作しませんでした (T_T) >ヒットしないキーの部分がヴァリューのエラーになるのです 私には、なぜだかわかりません。 私も今会社でExcel2000を使っていますけれど。。 。。。。Rin~♪♪

  • rin01
  • ベストアンサー率43% (33/76)
回答No.5

ふたたび~です。。。。Rin~♪ >参照(検査)対象が複数列になったとき >どう変えたらいいのでしょうか? これは、どんな場合でしょうか? どんな複数列で、結果はどんなになれば良いのでしょうか? 1行でも、例題の表を書いて頂けるといいのですが~。。。 それから、回答では、今回個人的に LOOKUP にこだわったので LOOKUPを書きましたが。 ホントは最初の回答は、こちらだったんです。 Noubleさんが、色々試されていろ様ですので アップします。 C1: =INDEX({"-","形容詞","名詞","動詞","接尾詞"},MAX(INDEX(COUNTIF(B1,{"*形容*","*名*","*動*","*尾*"})*COLUMN(A:D),))+1) ご参考に、どうぞ~。。。 >RinさんにはExcelハンドラーの称号を なあ~んて!!。書かれると・・すごくうれしい・・ですけど そんなレベルじゃありませんし。。。 たまたまの回答ですので。 でした。。。。♪♪

Nouble
質問者

お礼

いえいえご謙遜を マスターしただけには留まらず 我が儘・気ままな暴れ馬のExcelを ちゃんと御せる方とお見受けしましたので 僭越ながら…

Nouble
質問者

補足

早速のお運び感謝です 戸頃で    A    B                 C 1 美しい 美について形容した物 2 愛   感情の一つに付けられた名前 3 投げる 物を動かす動作の一つ 4 ~の  他の品詞の末尾に付く物 5 早い  速度を表すときの形容詞 6 …    …                  … … 前回のこの表で形容動詞が抜けていたと思いのですが 余談ですが形容詞と形容動詞は学会でも分けるか分けないか賛否両論だそうな そこでB列の左に1行追加して 形容詞はNULLのまま形容動詞はAAの列のどう行セルにMを入れ 後で値コピーペースト後に行削除して体裁をとるとします     A    B  C                   D      E 1   美しい    美について形容した物     形容詞 2   愛      感情の一つに付けられた名前 名詞 3   投げる    物を動かす動作の一つ    動詞 4   ~の     他の品詞の末尾に付く物    接尾詞 5   早い  M   速度を表すときの形容詞   形容詞 こんな感じですね で この上の表を     A    B  C                   D     E 1   美しい    美について形容した物     形容詞  形容詞 2   愛      感情の一つに付けられた名前 名詞   名詞 3   投げる    物を動かす動作の一つ     動詞   動詞 4   ~の     他の品詞の末尾に付く物    接尾詞  接尾詞 5   早い  M   速度を表すときの形容詞   形容詞  形容動詞 E列みたいなのを追加するにはどうすればいいの? と言うことなのです ちょっと考えてみたのですが このままでは4×2のマトリクスにはならないので ダミー記号を入れて {"m","a","a","a";"*形容*","*名*","*動*","*尾*";} として countifとSUMを掛けて =SUM(COUNTIF({B1,C1},{"m","a","a","a";"*形容*","*名*","*動*","*尾*"})*{5,6/2,7/3,8/4;1,2,3,4})+1とか countifを2つに分けて =SUM({COUNTIF(B1,{"m","a","a","a"});COUNTIF(C1,{"*形容*","*名*","*動*","*尾*"})}*{5,6/2,7/3,8/4;1,2,3,4})+1とか =SUM(COUNTIF(B5,{"m","a","a","a"})*{4,4,4.4,4},COUNTIF(C5,{"*形容*","*名*","*動*","*尾*"})*{1,2,3,4})+1とか したいとこ… うお~っと 最後のは許容しちゃった (^^;) でも他のって許容されませんよね? まあこんな感じなのですけど そんなのIF使えよ~ ょ~   ょ~      ~          ~ て言うか答え出てるやんけ~ け~      ~          ~ と突っ込み入りそうですが そこを曲げて4×2のマトリクスで何か名案合ったら宜しくお願いします 後、この例では隣接した列ですが 不細工ですし、制作途中で上司に見られないか冷やヽ物ですから それを思うとAA当たりならばれずに良いかな? とも思うのでそっちも出来たら宜しくお願い致します (*^_^*) (同一慣用句を入れ子にするのは極力なしで) ps 今日早速会社で使おうと思ったのですが Excel2000環境で配列を扱うCOUNTIFが上手く動作しませんでした (T_T) ヒットしないキーの部分がヴァリューのエラーになるのです なのでLookupも試してみたのですが今一… 何かこつでもあれば併せて宜しくお願いします (環境がExcel2000の最新版でないからなんて関係あります?)

  • rin01
  • ベストアンサー率43% (33/76)
回答No.4

Noubleさん こんばんは~♪ >かのスレッドでは失礼いたしました どのスレッドの事かと、探してしまいました~。。。。 どうか、お気になさらずに~。 >Rinさま は、ご遠慮申し上げます。で~す。。!! Rinさんでいいのです。。 ★COUNTIF(B1,{"*", ←ここは、内緒ですけれど。。。           あたま固いので~。。           1時間も考えてしまいました~(^_^;)汗!!笑い!! >countIFを分母に持って行ってるじゃないですか? >これって? 今回は、COUNTIFですが、こんな使い方は先輩の回答者の方の 回答で覚えました。 ★B2の場合 =COUNTIF(B2,{"*","*形容*","*名*","*動*","*尾*"}) は ={1,1,0,0,0}の配列ができます。 これを分母にして、1 を分子にすると =1/{1,1,0,0,0} → {1,1,#DIV/0!,#DIV/0!,#DIV/0!} になります。 エルセルでは、ご存知と思いますが数値を  0(ゼロ) で割るとエラーになります。 LOOKUPは、検索値を探す時エラーを無視しますので これを利用して、={1,1,0,0,0}の0(ゼロ)を意図的に エラーにさせるんですよね~。 どなたが最初に考えたのか、ホントにビックリ。すごいですよね。 そして、検索値 1 を探す場合LOOKUPは下の行を取得しますので B2の場合は、対応範囲の2つ目の 1 なので、 ,{"-","形容詞","名詞","動詞","接尾詞"})  → 2つ目は、形容詞になります。 今回の場合、検索値が無い場合、 ={1,0,0,0,0} になって、1つ目で "-" が返ります。。。 いろいろ書いたのに、説明がへたで、すみませ~ん。。。 Noubleさんは、上級者の方でご存知のことは 沢山あると思いましたけれど、この掲示板を見られる方も いると思って、書きました。 失礼があれば、ゴメンナサイ!! わたしは、すごくそそっかしいので。。 トンチンカンな、回答する場合も多いので~す。。。 そんな時は、遠慮なく指摘して下さい。 これからも、ご指導よろしくお願いしま~す。。。。 でした。。。。Rin~♪♪

Nouble
質問者

お礼

Rinさん サイドお越し頂き感謝です そうなんですか 実は僕判らなかったので お! なるほど~ φ(。。 と思ってしまいました またまた感謝です <(_ _)>

Nouble
質問者

補足

ちょっと疑問がわいたのですが これって 参照(検査)対象が複数列になったとき どう変えたらいいのでしょうか? SUMPRODUCTやSUM構文は元々2次元配列対応のようなので 出来そうに思ったのですが COUNTIFも2次元化出来るのでしょうか? それぞれの列に1回ずつ、2回使って「;」で繋ぐとか? 頭難いのか発想が追いつきません (T_T) 御指南お願い致します m(_ _)m ps 頑張って勉強しました =CHOOSE(SUM(COUNTIF(B1,{"*形容*","*名*","*動*","*尾*"})*{1,2,3,4})+1,"-","形容詞","名詞","動詞","接尾詞") =CHOOSE(SUMPRODUCT(SUMIF(B1,{"*形容*","*名*","*動*","*尾*"},$E$1:$E$5),{1,2,3,4})+1,"-","形容詞","名詞","動詞","接尾詞") =VLOOKUP(SUMPRODUCT(COUNTIF(B1,{"*形容*","*名*","*動*","*尾*"}),{1,2,3,4})+1,{1,"-";2,"形容詞";3,"名詞";4,"動詞";5,"接尾詞";6,""},2,0) =LOOKUP(1,FIND({"","形容","名","動","尾"},B1)/FIND({"","形容","名","動","尾"},B1),{"-","形容詞","名詞","動詞","接尾詞"}) sumifはセル参照が取れなくて残念です~ぅ (T_T) あとSUMPRODUCTは「*」にせず「,」の方が本来の形なのでしょうかね この形はSUMPRODUCTでもSUMでもいける汎用性のある形ですね やはりmshr1962様の構文中の「…,4})+1,…」の威力は絶大ですね 検索にヒットしない時は基本「0」が返されるのを利用して これに1を足して照合対象をスライドさせて「"-"」をフックするなんて… 恐れ入ります 参りました もし私に権利があるなら RinさんにはExcelハンドラーの称号を mshr1962様にはExcelハンドラーマイスターの称号を 是非差し上げたいところですね (どちらもExcelマスターより遙か上ですね) 残念ながらそんな権限無いのですが… (*^_^*)v

  • rin01
  • ベストアンサー率43% (33/76)
回答No.3

こんにちは~♪ 失礼しま~す。。。。 mshr1962さんの式を一部お借りして~。 こんな式でも良さそうですね!! C1:LOOKUP(1,1/COUNTIF(B1,{"*","*形容*","*名*","*動*","*尾*"}),{"-","形容詞","名詞","動詞","接尾詞"}) B列が空白の場合、エラーになります。 エラー表示では、困る場合は  ↓ C1:=IF(B1="","",上の式) で、空白処理にします。 ★ただ、このような、検索は Noubleさんご自身が書かれて いるように >勿論B列の内容には十分配慮するとして が、大事ですね。。。。 。。。。Rinでした~♪♪

Nouble
質問者

お礼

おoh!! Rinさま 来て頂けて有難う御座います 感謝です かのスレッドでは失礼いたしました ところで countif お主やるね!! て感じですよね 他にも隠れ「配列数」ハンドラーて 何かあるのですかね? それとこの式ですが countIFを分母に持って行ってるじゃないですか? これって?

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

>このB行の文字の中に"形容"・"名"・"動"・"尾"…等の物があるか調べ 膨大なデータベースが必要になりますけど、この部分をExcelで行うのですか? データベース専用ソフト(Accessなど)を使用する事をお薦めします。

Nouble
質問者

お礼

早速の助言感謝します ですが申し訳ないのですが賛同いたしかねます 意外とこういうシーンは資料作成中に有ると思います しかし「あ!サーチ掛けたい」と思う度に C列のためだけにアクセスに切り替えるわけにはいかないと思うのです この計算だけしかしないブックなら未だ良いですが ブックの説明から初めて更新歴・用語解説・目的と位置づけ… その他計算されない膨大なセルの片鱗の1シートの更に1列のためだけに移すのですか? 加えて 社内の主要ポストの方が使われている全パソコンに対し 新たにそのファイル形式を開示できるようにするのですか? たった1列の為だけに… 「て、いうかそんなことよりお前を首にした方が何百倍も安くて早くないか?」 と言われそうです ご免なさい 同意しかねます 申し訳ない

関連するQ&A

  • エクセルで単語帳を作り、複数セルで並べ替えをしたい

    A1 increase B1 動詞 C1 増える A2 beautiful B2  形容詞 C2 美しい A3 guarantee B3 名詞 C3 保証 ・ ・ ・ というように、単語帳を作り、行単位で、アルファベット順や品詞別に並べ替えたいのですが、 どのように設定すれば良いのかどなたかわかる方、教えてくださると嬉しいです。 上の例で言うと、 アルファベット順に A2B2C2 ↓ A3B3C3 ↓ A1B1C1 と言った具合です。単純にA列のみをアルファベット順に並び変えることはできるのですが、 行単位ではどうするのかわからずに困っています。

  • 複数のセルの内容をセルを並べ替えても反映されるようにしたい

    今、Excel2003で表を作成しています。 シート1のA列,B列,C列にデータを記入し、 同じ内容をシート2(A’、B’、C’列)に反映させたいと考えています。 A1,B1,C1というように一行がひとくくりのデータなのですが、 シート1のA~Cに入力したらA’~C’に反映されるようにしたいと考えております。 しかし、シート1の元データの位置がデータの並び替えをして変わるため、セル参照にすると、シート2に反映がうまくできません。 セルの位置ではなく、セルの内容を基準に、横一行のセルも移動してくれたら…と思います。 言葉足らずでわかりにくい点が多々あるかと思いますが、 回答よろしくお願いいたします。

  • すぎるの文法的解釈

    A:食べすぎる B:悲しすぎる C:穏やかすぎる Aは動詞の連用形+すぎる→複合動詞? Bは形容詞の語幹+すぎる Cは形容動詞の語幹+すぎる Aを複合動詞と考えると、「食べなおす」「食べだす」(こちらは接尾語というのでしょうか。)のような「なおす」・「だす」は、形容詞、形容動詞の語幹につくことがないので、「すぎる」だけが特別になってしまいます。 名詞にくっつく「さ行変格動詞」と同じく、B、Cのように、「形容詞・形容動詞」の語幹にくっついて、 新たに動詞を作る言葉、と解すると、独自性が高いので「すぎる」だけで、「~動詞」という新たな項目立てが必要かと考えます。 「すぎる」だけが、他に文法的な仲間を持たない独立した言葉のような気がするのですが、 どうなんでしょうか。

  • 国語の問題の回答を教えてください。

    国語の文法の問題です。一つでも分かる方がいらっしゃいましたらどうかご回答お願いします。 (A)各文の( )の中で、他と品詞の異なるものをA~Dから1つずつ選びなさい。 (1)(A大きな)夢を抱いて、遠く(Bはるかな)都への(C困難な)道を、実に(D確かな)足取りで彼は歩き始めた。 (2)(A急い)で解かないで、(B落ち着い)て考えれば、(C難し)い問題も割合簡単に(D片づい)てしまうものだ。 (3)小鳥を(A見る)まなざしや小動物にそっと声を(Bかける)ようすに彼の優しい心根が(C感じ)(Dられる)。 (4)(A暖かく)吹く風が心に(Bやわらかな)感情をもたらし、(C美しく)て(D心地よい)羽にくるまれているようだった。 (B)各文の( )内の品詞として適切な物をA~Dから一つづつ選び、記号で答えなさい。 (1)西の空はまだ明るいが、海上は夕闇が(濃く)なっていく。    A/名詞  B/形容詞  C/形容動詞  D/連体詞 (2)やっとの思いで駅に着くと、(すでに)私たちの乗る予定だった列車は出たあとだった。    A/動詞  B/副詞  C/連体詞  D/感動詩 (3)厳しい冬も終わり、暖かい春の(訪れ)も近そうだ。    A/名詞  B/連体詞  C/動詞  D/形容詞   

  • 複数セルから文字列を検索して・・・

    どう検索していいのかわからなかったので質問します。 複数のセルから特定の文字列を検索して、該当したセルに対応するB列の数字の合計を関数によって出したいです。 例えば画像を例にすると、A列で"()"という文字列が入っているセルがいくつかあります。 これらのセルに対応するB列の数字の合計を出したいです。 "()"は必ず文字列の末尾にくることとします。 回答よろしくお願いします。

  • 「知らなさすぎる」文法的に…

    「知らなさすぎる」という言葉を、 品詞に分けたいのですが…。 知ら…動詞 な…助動詞? さ…名詞化の接尾語? すぎる…動詞 とくに「さ」がわかりません。 「すぎる」には動詞の連用形または 形容詞の語幹がつくはずなのですが そうすると「な」も「さ」も説明できません。 どなたかよろしくお願いしますm(_ _)m

  • Vlookup複数検索

    sheet1のセルA列にB列とC列の値が当てはまった値を表示したいのですが。 -Sheet1- A    B    C P1   ピンク   大 P2   ピンク   小 範囲はSheet2のA列からC列です。 -Sheet2- A   B   C P1  ピンク  大 P2  ピンク  小 B1  ブルー  大 B2  ブルー  小 例えば、=Vlookup(A1,'sheet2!A:C,2,false) と Vlookup(A2,'sheet2!A:C,3,false) を合わせたい。 上手く説明出来ていませんが、宜しくお願い致します。

  • 複数セルから特定の文字を検索して、その対象セルを抽出したい

    エクセルで関数、VBAを使用して、下記のようなDATA抽出を行ないたいのですが、どなたか、ご指導いただけないでしょうか。 たとえば、2種のシートが、各々、 <シート1>   列A   列B 行1 A1 ABCD-123 行2 B23 EFGH-456 行3 C456 あいうえお <シート2> 列A 列B 列C  列D  列E 行1 A1 A2 A3 行2 B23 C5 A4 行3 A5 B2 C456 ・・・・・・・となっている場合、 <シート2> の列D  行1 へ "A1"と入力(記載)がある場合、列Eに   ”ABCD-123”と表示(抽出)を行ないたい。 セルには、文字、数字、記号が入ります。 よろしくお願い致します。

  • 検索値のセルと同じセルを探す方法は。

    検索値のセルと同じセルを探す方法は。 Excel 2003を利用しています。 以下のようなことをしたいですが、どのような関数でしたら良いでしょうか。 A列  B列  C列 有  東京  東京 有  東京  千葉    埼玉        埼玉 有  千葉 有  千葉 検索値がC列で、同じ内容のセルをB列から探し、 同じセルがあった場合、結果をA列に「有」と表示させたいのです。 実際のB、C列は何百行とあります。 無い場合は空白にしておきたいのですが、 このような関数はあるでしょうか? どうぞよろしくお願いします。

  • VBA複数セルで検索

    VBA複数セルで検索 VBA初心者です。 1つのシートにA列氏名1、B列番号1、c列エラー、D列氏名2、E列番号2と並んでます。 例) a*1001* *a*1001 a*1005*該当なし *a*1002 a*1000* *c*1003 c*1003* *e*1005 c*1005*該当なし *d*1004 以下続く(*はセル区切り) 氏名1と番号1の組み合わせが氏名2、番号2にあるかどうかチェックして ないものは、C列に「該当なし」とエラーを表示させたいです。 Find関数を使用してやってみたのですが、氏名と番号をセットで検索する方法がわかりません。 氏名と番号をくっつけて検索すればいいのでしょうか?

専門家に質問してみよう