プロが教えるわが家の防犯対策術!

パソコン名人のみなさま、いつもお世話になっています。

VLOOKUP関数で、検索値と範囲内の値に全角と半角の違いがあると、拾ってくれませんが、全角半角の違いは無視して拾ってくれるようにすることはできますでしょうか?

検索の型のTRUEの使い方がわからないのですが(FALSEしか使ったことがない)、それと何か関係あるでしょうか。
(関数式作成画面で、「検索の型には<検索値>と完全に一致するだけを検索するか、その近似値を含めて検索するかを論理値で指定します」とあるが、その言葉の意味すらわからない)

宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

半角・全角を同一視して、C1の値をA1~A4と照合してB列の値を持ってくる例です。



 =VLOOKUP(JIS(C1),JIS($A$1:$B$4),2,FALSE) または
 =VLOOKUP(ASC(C1),ASC($A$1:$B$4),2,FALSE)

配列数式なので、登録する時に、CtrlキーとShiftキーを押しながらEnterとします。
ただし、上の2式はB列の値を、全角または半角にしてしまいます。抽出する列が全角のみ、または半角のみなら上式で大丈夫でしょう。

これを回避した式が下です。VlookUpのかわりに、MatchとIndexを使っています。これも配列数式です。
CtrlキーとShiftキーを押しながらEnterとします。

 =INDEX($B$1:$B$4,MATCH(JIS(C1),JIS($A$1:$A$4),FALSE))

B列はそのまま抽出されます。
3式とも計算用の別の列を使わない前提で作っています。ご参考に。
    • good
    • 1
この回答へのお礼

*タイトルは、EXCEL97の間違いでした。すみません。でも今回は同じですよね?

nishi6さま...本当にいろいろお世話になっております。
具体的に式を教えて頂き、とても助かります。
しかし、実際はほとんど全角に統一されていて、たまに半角が出てきてエラーになってしまうという状況なので、こんな複雑(私から見たら)な式を作らなくても、VLOOKUPの式だけ入れておき、エラーが出た時点で手修正しようかな...? なんて、弱気になっております。
でも、もうちょっと簡単にできないかな? と甘い考えを持っていたので、それが無理らしいと分かっただけでも、大収穫です。
達人の方々は、このような場合でも、手修正に頼らず最初からエラーを回避すべくきっちり式を作っておくのかな?

取り急ぎお礼がしたく。
ありがとうございました!!

お礼日時:2002/01/08 19:38

>全角半角の違いは無視して拾ってくれるようにすることはできますでしょうか?



VLOOKUP関数単独ではできません。
JIS関数:半角→全角
ASC関数:全角→半角
を組み合わせる必要があります。
(データ列が半角、全角の何れかに統一されている必要があります)

>検索の型のTRUEの使い方がわからないのですが

VLOOKUPにおいて、FALSEを指定すると完全に一致しなければ#N/Aが返されるが、
TRUEを指定すると必ず何かの数値を選択します。

例1)数値の検索値:4、検索範囲:‥3.8、3.9、4.1、4.2‥の場合
3.9の行の該当するを持ってくる

例2)文字の検索値:AD、検索範囲:‥AA、AB、AC、AE‥の場合
ACの行の該当するものをもってくる

という形式なのですが、ご理解いただけますでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます!!
まだまだ知らない関数が多すぎる...。道は長い...。でも、本件はおかげさまで理解はしました。

FALSE/TRUEの件、理屈は分かりました。ありがとうございます。でも、実際仮名でやったら、似ても似つかないものがピックアップされてしまいました。(検索値「エ・・・(後略)」、検索範囲には、カタカナのセルと漢字のセルとアルファベットのセルが混在しているので、せめてカタカナのセルの行の該当するものが引っ張られてくるかと思ったら、なぜかアルファベットのセルの該当するものが...)。
まあでも今回は、理屈さえ分かれれば、用が足りますので、あまり欲張らない様にしないと...。無理して背伸びしないようにしまーす。

お礼日時:2002/01/08 19:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCOUNTIF 半角全角区別せずに探したい

B1に全角で「アアア」
B2に半角で「アアア」と入っていて
A1に=COUNTIF(B:B,ASC(B1))として下へドラッグしても、
1が返ってきます。

ASC(B1)こうすることによって、「アアア」は半角になり、B列に2つある事になるはずですが
なぜ1が返るのでしょうか?

Aベストアンサー

こんばんは!

お示しの数式では
COUNTIF関数の範囲B:B列そのまま(1バイトに変えていないもの)を
検索条件でB列の行を1バイトにして検索していますので、戻り値はそのようになるはずです。

今回の場合は
=SUMPRODUCT((ASC(B$1:B$1000)=ASC(B1))*(B$1:B$1000<>""))
のようにしてみてはどうでしょうか?

B列範囲を1バイトに変えたものが検索条件で1バイトに変えたものの個数を表示する!
という考え方です。

※ SUMPRODUCT関数は配列数式になりますので、極端にデータ量が多い場合はおススメしません。
そのため、とりあえず1000行まで対応できる数式にしています。m(_ _)m

Qvlookup関数で検索値を含む文字列を検索する方法

vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。
 よろしくお願いします。

Aベストアンサー

=VLOOKUP("*"&D1&"*",A:C,3,FALSE)

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QExcel 英大文字小文字を区別せず検索対象にする

こんにちは。
Excel 2007を使っています。

表中、A列に以下のような文字列があります。
DOG
house
HOUSE
dog
housing
HOUSING
dog
DOG


たとえばcountif関数でdogの個数を数える時は
=countif(A1:A100,"dog")
のようにしますが
dogとDOG両方を数えたいときにはどのように
どのようにしたらよいでしょうか?

お分かりの方お教えください。
よろしくお願いいたします。

Aベストアンサー

=countif(A1:A100,"dog")
の式ではdog の場合は勿論、DOGの場合でも数えられますので、dogとDOGを区別することなく数えられますね。
ご質問はお示しの式で対応できます。
それとは別にDOGとdogの数を区別して数えるのでしたら次のような式になります。

DOGの数は

=SUMPRODUCT((A1:INDIRECT("A"&MATCH("ー",A:A))="dog")*(CODE(A1:INDIRECT("A"&MATCH("ー",A:A)))=<90)*1)

この式でMATCH関数の中のーは一旦式を確定した後でひらがな入力モードでーを入力するようにします。半角の-ではいけません。

dogの数は

=SUMPRODUCT((A1:INDIRECT("A"&MATCH("ー",A:A))="dog")*(CODE(A1:INDIRECT("A"&MATCH("ー",A:A)))>90)*1)

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

QExcelで文字列の中から部分一致したものを抽出

エクセルで特定の文字を含むセルを抽出する方法を探しています。

A列に元データ、C列に検索条件があります。
C列の条件に一部でも一致するデータを抽出したいです。(結果イメージを添付します)

可能であれば、関数で対応したいです。

どなたかお分かりになる方いらっしゃいましたら、
教えていただけないでしょうか?

よろしくお願いいたします。

Aベストアンサー

こんにちは!
A列は当然文字列だと思いますが、C列の日付セルがシリアル値だと厄介です。
とりあえずC列の日付セルは「文字列」だという前提での一例です。

画像の配置ではB2セルに
=IF(OR(ISNUMBER(FIND(C$2:C$6,A2))),"○","")
これは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → B2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後の{ }マークが入り配列数式になります。
これをフィルハンドルで下へコピーしてみてください。

※ 検索データ(C列データ)が増える場合は元データにまず使うことはないであろうと思われる
「*」(アスタリクス等の文字、#のような文字でも構いません)を入力しておき、数式内の
>C$2:C$6
部分の範囲を広げておきます。
そして検索データが増えた場合はアスタリクスの代わりに検索文字列を入力します。
(空白セルは範囲指定しないようにするためです)

※ C列日付データがシリアル値の場合、別の方法を考える必要があります。m(_ _)m

こんにちは!
A列は当然文字列だと思いますが、C列の日付セルがシリアル値だと厄介です。
とりあえずC列の日付セルは「文字列」だという前提での一例です。

画像の配置ではB2セルに
=IF(OR(ISNUMBER(FIND(C$2:C$6,A2))),"○","")
これは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → B2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後の{ }マークが...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QEXCELで別のシートのデータを参照して返す方法

ちょっとしたことなのですが、うまく式が書けなくて悩んでいます。

作業用のシート1と参照用のシート2があり、
シート1のA列には
 あおき
 あべ
 いぐち
 いはら
などと文字列(名前)が入力されています。
こちらは今度の野球のスタメンだと思ってください。

シート2にはA列とB列があって、
わたなべ 55
いぐち  43
あおやま 67
いはら  41
などと、名前:背番号が羅列されています。こちらが参照用の全選手の背番号リストだと思ってください。

ここで、 シート1のB列に、A列の名前に対応した背番号を返したいのです。
なので、シート1のB列に
IF(シート1のA列の値=シート2のA列のいずれかの値)だったとき、
適合したシート2の行のB列の値を表示する
という式を入れたいのですが、どのように式を書けばよいでしょうか。

すみませんがどなたか教えてください。

Aベストアンサー

私もその場合はVLOOKUP関数を使用しています。

「B1」=VLOOKUP(A1,Sheet2!$A:$B,2,0)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング