• ベストアンサー

IF、COUNTIF、VLOOKUPで「あいまい文字」を検索

Sheet2のセル(J1)にSheet1のA列のデータを入力することでSheet1に入力してある他の列のデータをSheet2の任意のセルに表示させているのですが、ある文字(k)を含むデータの場合だけ異なる表示(ABC)をさせたいのですが、下記数式では「正しくない」と叱られています。 数式: =IF(COUNTIF(VLOOKUP($J$1,Sheet1!$A$2:$L$200,2,FALSE),"*k*"),"ABC",(VLOOKUP($J$1,Sheet1!$A$2:$L$210,2,FALSE))) Sheet1: 番号 サブNo. DATA1 DATA2 ・・・ 100  k321  あ   い ・・・ 101   321  う   え 102  k456  お   か 103   789  き   く のようなデータシートです。 上記数式をどのように直せば「サブNo.」に「k」を含むデータを「ABC」と表示させ、含まない時は「サブNo.」を表示させられるのでしょうか、ご教授ください。 よろしくお願いします。

  • mfno
  • お礼率67% (46/68)

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

  • ベストアンサー
回答No.3

=IF(ISERROR(FIND("k",VLOOKUP($J$1,Sheet1!$A$2:$L$200,2,FALSE))),(VLOOKUP($J$1,Sheet1!$A$2:$L$210,2,FALSE)),"ABC")

mfno
質問者

お礼

ありがとうございました、思ったとおりの結果が出ました。ホントにありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

IF関数は、ストレートにはワイルドカードに*は使えない。 CountIFは使えます。 k321 321 k456 789 12K で=COUNTIF(B1:B5,"*k*")で3になります。 例えばF1に =COUNTIF(B1,"*k*") F5まで複写すると 100 k321 あ い 1 101 321 う え 0 102 k456 お か 1 103 789 き く 0 112 12K お え 1 となります。ですから =IF(COUNTIF(B1,"*k*")=1,"ABC",VLOOKUP(・・・)) でどうですか。 FIND関数はワイルドカードは使えないが、SEARCH関数は使えます。 なおKは半角・全角に注意してください。上記例では半角に統一。

mfno
質問者

お礼

ありがとうございました。#3の方のご回答で思ったとおりの結果を出すことが出来ました。 お忙しいところお手数おかけしました、ありがとうございました。

noname#61366
noname#61366
回答No.2

もっと詳しい方がお応えすると良いと思うのですが,お急ぎなのに,回答が寄せられていないので... "*k*"と指定してしまうと,*は1つの文字として認識されます。 それにワイルドカードは使用できなかったように思うのですが.... vlookupは検索条件をtrueにすると,あいまい検索になったように記憶しております。 補足をお願いしたいのですが,k321は文字列,321は数値として認識できるのでしょうか?

mfno
質問者

お礼

お忙しいところ親身にご回答頂き、ありがとうございます。 #3の方の計算式で思ってたとおりの結果を出すことができました。ありがとうございました。 ちなみにk321は文字列、321は数値です。 ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

IF(Find(Vlookup(~),"*k")>0 ,"ABC",Vlookup(~))

mfno
質問者

お礼

早速のご回答ありがとうございます。 しかしエラーがでてしまいました。

関連するQ&A

  • EXCELのVLOOKUPを有用に使いたいのですが

    すみません。どなたか教えてください。 たとえばA1のセルに以下の値があったとします。 <abc>1<abc> このうちの1の部分をA2のセルに表示したいときは=MID(A2,6,1)で表示できました。別のシート(仮にsheet2)に例えばA行に1から昇順に番号が振られていてB行にデータが入っていたとします。VLOOKUPを使ってsheet2のB行を表示したいときは=VLOOKUP(A2,Sheet2!A:B,2,FALSE)でできると思ったのですがエラー表示になってしまいました。A2のセルを更にコピーして例えばA3に形式を選択して貼り付けで値を選択して1を表示してから=VLOOKUP(A3,Sheet2!A:B,2,FALSE)をするとB行の値が表示されるのでA2は1とみなされてないということになるかと思うのですが、A2内で1とみなすようにできる関数はないでしょうか?

  • VLOOKUPの検索値の集計について

    複数シートのデータをVLOOKUPを使って、sheet1(B2~B50)に検索表示させ、更にその値を縦集計し、sheet1(B1)に表示させたいのですが、検索値が文字列のため集計ができません。 VLOOKUPの式に、文字列を数値に変換するように組み込む方法があれば教えてください。 (元データの表示形式は「標準」になっております。) sheet1(B2~B50)には、現在このような式を入れています↓ =IF(COUNTIF(sheet2!$A$2:$E$50,sheet1A!$2),VLOOKUP(sheet1!$A2,sheet2!$A$2:$E$50,2,FALSE)*1,"")&IF(COUNTIF(sheet3!$A$2:$E$50,sheet1!$A2),VLOOKUP(sheet1!$A2,sheet3!$A$2:$E$10,2,FALSE)*1,"")

  • 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) を合わせたい。 上手く説明出来ていませんが、宜しくお願い致します。

  • VLOOKUPで検索したデータを元にVLOOKUP

    集計シートにてVLOOKUPでソースシートAから検索したデータ"ABC"(URL文字列)が存在します。 このデータABCを、ソースシートBから検索して、データ"yahoo!"を取り出したいと考えています。 ソースシートA ABC 100 DEF 200 GHI 300 集計シート ABC 100 (セルの実態はVLOOKUP関数) ソースシートB ABC yahoo! DEF google GHI 楽天 作りたいシート ABC yahoo! 100 これを実現するための関数をご教示頂きたく思っております。 情報不足でしたら可能な限り追加で説明させて頂きますのでどうかよろしくお願いします。 ※アクセス等でABCをキーに結合させてしまえば楽かもしれませんが、実作業する人間がアクセスに不慣れなためエクセルで実現したいです。

  • VLOOKUP関数をIFで条件付けしたのですが。。

    シートが2枚あり1枚は名簿シートです。 別シートのセルA1に名簿シートのコード番号を入力し セルA2にVLOOKUP関数で式を下記のように入れています。 =VLOOKUP(A1,名簿!N:P,3,FALSE) このとき値がブランクになるときがあるので そのときは隣の列から数値を拾い出したいのです。 そこで =VLOOKUP(A1,名簿!N:Q,4,FALSE) だと思うのですがですが、自分でIFで式を組んだら =IF(VLOOKUP(A1,名簿!N:P,3,FALSE)="",VLOOKUP(A1,名簿!N:Q,4,FALSE),VLOOKUP(A1,名簿!N:P,3,FALSE)) となりました。 一応、希望通りの答えが返されるのですが、 もっと簡潔な組み方はあるのでしょうか?? IFでなくても何か方法があるのでしょうか?? よろしくご教授お願いします。

  • VBA VLOOKUP 検査値が数値だと#N/Aになってしまう

    VBAでVLOOKUPをセルに表示させるようにしましたが、検査値が数値になると#N/Aになってしまいます。 IFと組み合わせて検索セルがブランクのときは空白、そうでないときはVLOOKUP数式をもともと1000行くらい埋め込めばいいのかもしれませんがそうすると1000行を超えたらどうする?など柔軟性がいまいちなので、行数が変わっても対応できるようVBAでLOOPにしようと思いました。 アクティブシートのA列の値をシート「マスタ」のA列から探してきて、「マスタ」のB列の内容をアクティブシートのB列に表示させたいです。 最終行 = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row j = 2 Do Until j = 最終行 + 1  Cells(j, 2).Select  Selection.Formula = "=Vlookup(""" & Cells(j, 1) & """,マスタ!A:B,2,false)"  j = j + 1 Loop 検索が数値の場合、#N/Aになります。 数値でも文字列でもvlookupで拾えるようにするにはどのようにしたらよいでしょうか。

  • 【VBA】別シートを検索して該当があれば『●』表示

    VBA初心者(独学中…)です。 別シートからVLOOKUPの要領でデータの抜き出しをしたいです。 関数を試しましたが、データ量が多く、かなり時間が掛かってしまうため、 できればマクロで完了させたいと思っています。 ご教示のほど、何卒よろしくお願いいたします。 ------------------------  帳票の仕様 ------------------------ ■Excel2010 にて  ・Sheet1~9のJ列に『検索コード』があります。  ・Sheet10は【コードマスタ】シートです。  ・行はシートにより増減あり。  ・列はSheet1~9で共通、項目・並び等 変更なし。     Sheet10も項目・並びは変更しません。 ------------------------  やりたいこと ------------------------ Sheet10からSheet1~9へ、VLOOKUPのように該当データを抽出・転記したい。 ------------------------  具体的には… ------------------------ Sheet1~9の『検索コード(J列 ※データは[セル:J2]以下~)』を元に、  (1)Sheet10のA列を検索 ⇒ 該当があればSheet1~9のK列へ  (2)Sheet10のB列を検索 ⇒ 該当があればSheet1~9のL列へ 『●』が表示されるようにしたい。 ------------------------------------------------------------------------ 試しに(1)の動作テスト用に、以下を書いてみましたがうまく動作しませんでした。 (★の部分がエラーになります) 正しく動作させるには、どのようにしたらよろしいでしょうか。 (実際のコードを教えていただけますと、大変有難いです…) ================================================================ Sub コードマスタからK列値をVLookup() Dim tbl As Range Set tbl = Worksheets(10).Range("A:B") Dim key As Long key = Range("J2").Value        ★ On Error Resume Next Dim ret As String ret = WorksheetFunction.VLookup(key, tbl, 1, False) On Error GoTo 0 Range("K:K").Value = ret End Sub ================================================================

  • vlookup+条件付書式

    シート1の数列とシート2の数列をマッチングかけて、適合した場合にはシート3に表示、というファイルを作りました。 シート3のセルの数式は以下のようなものです。 =VLOOKUP(シート1!A2,シート2!B:B,1,FALSE) 適合して文字列が表示されたセルには背景色をつける、ということをしたいのですが、条件付書式との組み合わせ方がわかりません。 わかるかたいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • VLOOKUPとIFの組み合わせで困ってます

    シートが2枚あり、sheet1は工事記録一覧、sheet2は納品書です。 sheet2のセルA1に、工事記録の管理番号を入力し、 セルA2以降に、管理番号に該当する住所や建物名、 工事種類などを表示させたいと思ってます。 参考にするセルが空欄の場合には、空欄のままにしたいので、 IF関数とVLOOKUP関数を組み合わせて 下のように自分で式を組んでみましたが、#N/Aになってしまいます。 =IF(A1="","",VLOOKUP(A1,sheet1!A1:J20,3,FALSE) 同一シート内で同様の式を入れた時は、希望通りの答えが返ってきましたが、 別のシートだと上手くいきません。 どなたか正しい式をご教授いただけますでしょうか。 エクセル初心者で、ネットや本で調べながら作成しているので、 分かりやすく教えていただければ助かります。 どうぞよろしくお願いいたします!

  • 検索値に数値や文字列で検索してもエラーになる

    WIN7 EXCEL2007でマクロ作成中の初心者です。  A列(セルA3からA20)に  組、 Z3、 B4(1)、45、8 などの文字列や数値が表示されています。  (セルA列には、VLOOKUPで他の表から検索したものです。)   そして、C列に(セルC3からC20) セルA3が 組のときは   セルC3に 5:00 を入れなさい セルA4が Z3のときは   セルC4に 6:00 を入れなさい セルA5が B4(1)組のときは セルC5に 9:00 を入れなさい    セルA6が 45  のときは セルC6に 11:00を入れなさい という式をいれたいのです。 ちなみに自分で以下の式をいれて確認したところ =VLOOKUP(A3,データ範囲名,2,FALSE) =VLOOKUP(A4,データ範囲名,2,FALSE) =VLOOKUP(A5,データ範囲名,2,FALSE) 以下つづく するとセルA3の表示が W3 のときは #N/Aになり W3のとき正常に表示されます。 45という数字も出来ました。 検索値は文字列でも数値でもOKと聞いてますが、なぜ出来ないのでしょうか? 他のfindとか別の方法でも出来る方法教えていただきたいです。

専門家に質問してみよう