[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VLOOKUP計算が出来ません・・・』(かわうそ4444)
教えて下さい。
一月から転職した会社で、エクセル2010を使ってますが、下記の様な症状があり、
困っています。何かの設定の問題なのか、理由が分からなく、色々調べましたが、
お手上げ状態です。どんなアドバイスでもいいので、お力を貸して下さい。
出来る作業:SUMPRODUCT,COUNTIF,COUNTIFSなど
出来ない作業:VLOOKUP,昇順・降順作業
例:
A B C D E
コード 品物 売上 順位 コード抽出
1 1111 りんご 30000 4 3
2 1112 みかん 40000 2
3 1113 すいか 35000 3
4 1114 いちご 46000 1
5 1115 ぶどう 29000 5
この表で、E2に、=VLOOKUP(E2,A1:D5,1,FALSE)
と式を入れると、答えが『1113』と出るはずですが、
#N/Aと表示されてしまいます。
また、フィルターで昇順・降順をやると、順位どおりに
並びません。
ちなみに、セルの書式の表示形式は、『標準』になってます。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
すみません。 何がやりたいのかわかりません。 >E2に、=VLOOKUP(E2,A1:D5,1,FALSE) E2にE2を参照する数式を書いても、循環参照のエラーになるでけです。 =INDEX(A2:D5,3,1) これ?? BJ
(?) 2015/01/22(木) 16:45
多分、F2にVLOOKUPの数式を入れているのだと思いますが。。。
VLOOKUPのヘルプを見てください。 「指定された範囲の1列目で特定の値を検索し」
つまり「検索値の対象(探す先)がデータの一番左にないとだめですよ」ってことです。
順位からコードを検索したいのだと思いますが、 かわうそ444さんの数式だと、 検索したい値は「順位」だけど、 「コード」列の中から「順位」を探しているので、 ほしい答えは出てこないと思います。
>また、フィルターで昇順・降順をやると、順位どおりに >並びません。 「フィルター」ではなく、「並び替え」ですよね。
書式が「標準」であってもCSVデータなどの場合は、 実は書式は「文字列」になっていることがあります。
一度、使っていない列に =ISNUMBER(A1) と数式を入れてみてください。 TRUEであれば、数値ですし、FALSEであればおそらく文字列だと思います。
(どなみ) 2015/01/22(木) 16:51 一部、文章追加しました。 16:57
=INDEX(A1:A5,MATCH(E1,D1:D5,0)) ってことかな? (se_9) 2015/01/22(木) 16:58
一部訂正を。 >書式が「標準」であってもCSVデータなどの場合は、 >実は書式は「文字列」になっていることがあります。 確認した書式が「標準」であっても、 Excelの処理上では書式が「文字列」と判定されることがあります。 と、言いたかったです。
わかりにくい文章ですみません。 (どなみ) 2015/01/22(木) 17:02
どなみさんへ
ご指摘のとおりです。CSVデータを、エクセル2010に貼り付けて、データ表を
作りたいのですが、シートのAG3に、=ISNUMBER(A1)を入れたら、『FALSE』と出ました。
しかし、AG3の、セルの書式設定を見ると、FALSEと表示されたままでも、表示形式は
『標準』となります。ここで質問なのですが、この矛盾を解くには、CSVデータを、
エクセル2010に張り付ける(移動させる)時、どの様な作業をすればいいのでしょうか?
基本的な質問かも知れませんが、教えて下さい。宜しくお願いします。
かわうそ4444
貼り付けた後、A列を選択して、 Excelの一番上にある「データタブ」の中にから 「区切り位置」を選んで何もせずそのまま完了。。。でいけたはずです。
VLOOKUPの方は解決しましたか? (どなみ) 2015/01/22(木) 17:15
SE_9さん、どなみさん
コメントありがとうございます。
検証結果ですが、SE_9さんの、INDEX式だと出来ました。
どなみさんに質問ですが、『区切り位置』が、やってみましたが、
その後、=ISNUMBER(A1)をやると、FALSEになり、やはり
VLOOK関数が使えません。もう一度、シート全てが、『TRUE』になる方法を
教えて下さい。
かわうそ4444
数式がエエかアカンかはおいといて。。。
=VLOOKUP(E2&"",A1:D5,1,FALSE)
と、検索値を文字列変換でエエよーな。
両方対応するなら
=IFERROR(VLOOKUP(E2&"",A1:D5,1,FALSE),VLOOKUP(E2,A1:D5,1,FALSE)) (GobGob) 2015/01/22(木) 18:45
回答じゃないのですが、コメントを書くときは編集からではなく コメント欄から書いてください。 (se_9) 2015/01/22(木) 18:50
一応ですが、区切り位置は複数列には使えませんので、 A列のみ選択した状態などで行って下さい。 また、どなみさんも書かれてますが今の表の形では 希望の事はVLOOKUPではできません。
(コナミ) 2015/01/22(木) 20:01
どうもよくわからないんですけど・・・
> =INDEX(A1:A5,MATCH(E1,D1:D5,0))
この式だったらできたんですよね? だったらD列の順位は数値になってるのではありませんか? 少なくとも検索値のE1(かE2か知りませんが)とD列の順位はデータ型が同じはずですから、 検索には何も問題ないと思いますよ。 何を昇順に並べ替えようとしているのかもわかりませんが、 VLOOKUP関数を使うためには昇順にしなければならないと思っていませんか?
質問の場合は完全一致検索(検索の型:FALSE)ですから 並び順はランダムでかまいません。 VLOOKUPでできない原因は表のつくりです。 通常VLOOKUP関数を使う場合は、検索する列が左端にないといけません。
順位を検索するんですから順位をA列にもってきます。
※左端というのはVLOOKUP関数で指定する範囲の左端という意味ですから、 もしコード番号がD列にあれば順位はC列でもいいです。 とにかくコード番号よりも左の列に順位をもってくるということです。
A B C D E F 1 順位 コード 品物 売上 2 4 1111 りんご 30,000 3 1113 3 2 1112 みかん 40,000 4 3 1113 すいか 35,000 5 1 1114 いちご 46,000 6 5 1115 ぶどう 29,000 こうしておけば
F2: =VLOOKUP(E2,A2:B6,2,FALSE)
これでコード番号が返ります。 順位を昇順にする必要はありませんし、コードが数値でも文字列でも関係ありません。 (JKT) 2015/01/22(木) 20:18
数値のはずのコード番号が何らかの理由で文字列になっていたとして VLOOKUPの結果だけでも数値にしたい場合は、前の回答と同じく順位をA列にした上で、
F2: =VLOOKUP(E2,A2:B6,2,FALSE)*1
上のように、最後に「*1」してみてください。
数値かどうかの確認は、TYPE関数でもできます。 =TYPE(F2) と入れて、結果が「1」だったら数値、「2」だったら文字列です。 「*1」した場合、していない場合の両方でどうなるか確認してみてください。 ちなみにエラー処理を入れるなら F2: =IFERROR(VLOOKUP(E2,A2:B6,2,FALSE)*1,"") 「*1」が不要なら取ってください。 (JKT) 2015/01/22(木) 23:13
いろいろ書きましたが、結論は、ここはVLOOKUPではなく 列を入れ替えなくても済むINDEX 〜 MATCHで処理するほうが賢明だということです。 >『区切り位置』が、やってみましたが、 > その後、=ISNUMBER(A1)をやると、FALSEになり、やはり > VLOOK関数が使えません。
それとも並べ替えのキーは順位ではなくコード番号で、VLOOKUP関数の話を抜きにしても、 昇順にしたいのにならないということなんでしょうか?
だとしたら実際のコード番号がどのようなもので、 どんなやり方で並べ替えたのか、 それがどんな順番になってしまうのか、 ということをまず書いてもらったほうがいいかもしれませんね。
一応確認ですが、=ISNUMBER(A1) このときのA1セルにはサンプルでいうと 何が入ってるんですか? 1111のようなコード番号ですか? まさか見出しの「コード」じゃないでしょうね? > もう一度、シート全てが、『TRUE』になる方法を教えて下さい。
この「シート全てが『TRUE』」というのも、どういうことなのかよくわかりません。 (JKT) 2015/01/23(金) 07:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.