• ベストアンサー

エクセルでのソートがうまくいきません

imogasiの回答

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

両方の文字列に違いがあることは確実です。 疑わしいセル同士で=EXACT(Sheet1!A1,Sheet2!D1) のようにしてFALSEが出れば、何か違うのです。 スペース(TRIM関数で取り除ける場合もあります)や見えない文字コードが入っている可能性かあります(CLEAN関数で取り除ける場合もあります)。 後は全角か半角です。(JIS関数などで統一できる場合があります) 色々な原因タイプを学ぶことはできますが、1度で訂正は難しいでしょう。テーブルを作った方のせいです。 エクセル(システムや関数)がおかしい、なんて方にぐらつかないこと。 VLOOKUP関数の第4引数は、質問の場合FALSEを略さないこと。 FALSE型は検索表を並べ替えしなくて良い。ならべ変えの話題が出ることが、VLOOKUP関数FALSE型の勉強不足です。 >御判りの方がおいででしたら 質問者のパソコンデータが見てテストできないのですから、誰にもはっきりと答えられません。

nerio
質問者

補足

ご回答有り難うございます。 見積書と商品コード表が一緒になったBOOKは私が作り、複数の営業担当者に渡して使ってもらっています。 商品コードを入力する際は「直接入力で入れるよう」に指示しています。 >エクセル(システムや関数)がおかしい、なんて方にぐらつかないこと。 そんな大それた事は思ってもいませんし、言ってもいませんが。 >質問者のパソコンデータが見てテストできないのですから、誰にもはっきりと答えられません。 そういう意味ではなく、「文字列に設定したセルに入力したデータが文字列以外に判断されるような事があるのだろうか?またそのような経験をお持ちの方がおいででしたら」という意味で書いたつもりでしたが・・・。

関連するQ&A

  • エクセルの質問です

    A列は空白 B列に商品をあらわ5桁のコードが入っています。 C列にも同じく商品を表す5桁のコードが入っているのですが、 B列のセルと隣り合ったセルには同じ数字が入っていません。 D列には取引先の会社名が入っています。     B1に入ってる5桁の数字と同じ数字が入っている C列のセルを探し、 そのセルの隣のD列の会社名をA1のセルに表示させたいのですが、 どう関数を組んだらいいのでしょうか? A   B    C   D     12345 12354 A社    12334 12345 B社    12443 12544 C社 上の表の場合B1とC2数字が同じなのでA1にB社と表示させたいのです。  B列が昇順で並んでいる C列とD列は重複しない という条件で <=vlookup(b1,c:d,2,false)> という回答を頂いたのですが、 B列が昇順で無い(ランダムに数字が入っています) D列には同じ会社名が何度も出てきます。 どうすればいいのかわかる方お願いします。

  • エクセルの質問です

    A列は空白 B列に商品をあらわ5桁のコードが入っています。 C列にも同じく商品を表す5桁のコードが入っているのですが、 B列のセルと隣り合ったセルには同じ数字が入っていません。 D列には取引先の会社名が入っています。     B1に入ってる5桁の数字と同じ数字が入っている C列のセルを探し、 そのセルの隣のD列の会社名をA1のセルに表示させたいのですが、 どう関数を組んだらいいのでしょうか? A   B    C   D     12345 12354 A社    12334 12345 B社    12443 12544 C社 上の表の場合B1とC2数字が同じなのでA1にB社と表示させたいのです。  

  • 【エクセル】VLOOKUPが上手くいきません。。。

    VLOOKUP関数がうまくいかないので教えてください。 下のような表になっています。    A     B    C    D    E    F 1  番号  名前               コード 2 11-2345  ABC  11  #N/A  11  あああ 3 22-3456  DEF  22  #N/A  22  いいい  4 33-4567  GHI  33   #N/A  33  ううう 5 44-5678  JKL  44        44  えええ 6 ・・・・ ・・・               55  おおお 7 ・・・・ ・・・               66  かかか A、B列はがもとから打ち込んであるデータです セルC2は =LEFT(A2,2) でA列のハイフンの前を表示しています。 セルD2に =VLOOKUP(C2,$E$2:$F$7,2,FALSE) を入れると#N/Aが表示 されます。ちなみに、セルC2にLEFT関数ではなくて、数字をそのまま、 11と入力すると、セルD2に「あああ」と表示されます。どこがいけない のでしょうか? $E$2:$F$7はC列の二桁の数字に対応するコードの表になっています。 エクセル2003を使っています。

  • エクセルのソートについて

    こんにちは いつもお世話になっています。 エクセルのソートに関して教えてください。 A列に商品名(ふりがな情報あり)、B列に一桁と二桁の数字(標準表示形式)があります。 ソートの優先順位を第一がB列の下一桁の数字、第二がA列の商品名にする方法を教えてください。 よろしくお願いします。

  • エクセル縦横検索

    エクセルの縦横検索で関数がわからず何日も悩んでいます。。 <Sheet1> は商品コード・ランクごとの単価表です。   A列    B列     C列   D列    E列  F列 1  商品コード 商品名  Sランク Aランク BランクCランク  2  00010001 AA-1111 10.00 11.00  13.00 14.00 3  00100022 AB-222  11.00 12.00  15.00 16.00 4  00200033 BDB-123 20.00 21.00  22.00 23.00 5  00300033 CA-111  9.00 10.00   11.00 12.00 …  ・・・ 10  01000033 OP-100   30.00 31.00  32.00 33.00 11  02000123 TD-358  10.00 11.00  12.00 13.00   以下5000行ほど続きます。 <Sheet2>は得意先ごとのランク表です。 商品群は商品コードの頭2桁目と3桁目(00、01等)でランクが決まっている為、1行目に2桁の数字を入れています。   A列        B列             C列   D列   E列 … 1                            00   01    02    10  20  2  得意先コード 得意先名/商品群  AA  AB   BDB   OP TD  3  11111    あああ            S    A     C    B  C 4  11222    いいい            A   C     B    S  A 5  12333    ううう              C    S      S    A   B 6  12444    えええ            A   A      B    C   C 7  12555    おおお            B   B     C    S  B …  ・・・   横に50列ほど続きます。 <Sheet3>は入力画面です。    A列       B列      C列   D列 1   得意先コード 商品コード   ランク  単価 2   11222     01000033    得意先コードと商品コードを打ち込むとC2にランク(例だとS)が出るようにしたいのですが、 VLOOKUP($A$2,Sheet2!,A1:Z100,MATCH(C2,Sheet1!A1:A5000,C1:F1)) とすると、アルファベットは出るのですが、ランク表どおりに出ません。01と10が同じ数字として認識されてしまいますし、2桁目と3桁目を認識する関数がわからないので、ここで止まっています。 ランクが出たら、隣の単価を求める関数もついでに教えていただけたらさいわいです。 よろしくお願い致します!

  • エクセルVLOOKUP関数について

    =IF($B$3="","",IF(ISERROR(VLOOKUP($B$3,注文管理!A$3:AE$9898,4,0)),"客注NO.を確認!",VLOOKUP($B$3,注文管理!$A$3:$AE$9898,4,0))) VLOOKUP関数を使って、上の式を作りました。 B3に入るのは5桁の数字で文字列です。注文管理のA列に5桁の数字が入っており、そこも文字列にしています。 うまくいく数字とうまくいかない数字があるのですが、なぜだかわかりません。 どこがおかしいのかおしえてください。

  • エクセルのIF関数でVLOOKUPを論理式で

    こんにちは IF関数を勉強しています、過去の質問履歴のQNo.2489708を参考にさせて頂きましたが私の思うような結果が得られないので教えていただければと思います。 ■数式が=IF(A1="","",IF(VLOOKUP(A1,B3:B5,1,FALSE)=A1,C3,D3)) ■内容ですが 第1のIFで A1はブランクで真 偽の場合次のIF関数 第2のIFで 論理式を使い、A1の値がB3~B5の値と同じ場合と表現し       真の場合C3 偽の場合D3 C3のセルにはOK D3はNGと入っています ■結果  A1に入力した値とB3~B5の数字が合えば『OK』を返してくれるのですが  それ以外の場合のD3の値『NG』を返してくれなく#N/Aを返してきます。 数式がやはり違うのかなー  ■試した事  『OK』と『NG』をセルで指定しているのでここを単純に,"OK","NG"としてみましたが結果は同じでした・・・ ■合わせて  B3~B5のセル書式設定が文字列の場合(01234などの0を先頭に表示する場合セルの書式設定を文字列にしています)は特別な関数を入れ子するのでしょうか? ■いろいろ参考書を買って確認しましたが同じようなケースは無いようです。 ■VLOOKUPを使う理由  じつは、商品毎に別シートへ台帳を作り管理しています。  例えば、『シート名お菓子』に商品コードが無い場合『シート名飲料』を見に行く様にしたいのです。  商品はなるべくコード(数字)にしているのですが、0ゼロから始まる商品コードもあるので四苦八苦考えています・・・このIFとVLOOKUPを使うと幅が広がると思い夢を描いています。その他にMATCH関数でも考えましたが上手く結果が得られず困っています、どうぞ宜しくご教授ねがいます。

  • エクセルの数字の桁数

    エクセル2000です。 3000行程のデータです。横に並べた3つのセル(A~C列)の数字をひとつのセルにまとめてD列に表示しようと思います。希望はゼロも含めて8桁の番号10036803にしたいのですが、ゼロがとれて13683になってしまいます。 なお、Dのセルには=A1&B1&C1としています。    A  B  C    D  1 1 00368 03  10036803 よろしくお願いします。

  • excelで文字列を検索する関数を教えてください。

    いつもお世話になります。 エクセルの関数で、シートAのセルA1に入っている文字列をシートBのC列から探し出し、同じ文字列があればTrueをなければFalseを返す関数を教えてください。 わからないながらも色々調べてみたのですが、検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 よろしくお願いします。

  • エクセルの「IF+VLOOKUP」に関してのよくある問題で、意味のわからない相対参照があります

    「1.セル【C18】にセル【B18】の「商品コード」に対応する「商品名」を返す数式を入力して下さい。「商品一覧」の表を参照すること。 次に、「商品コード」が入力されていない場合は、「商品名」にエラーが表示されないように数式を修正して下さい。(シートに表があり、IF+VLOOKUPを使う問題です) 2.セル【C18】の数式をもとに請求書の表を完成させて下さい」(←「【C18】の下の行も同じように、商品コードから商品名を表示させれるように完成させなさい」っていう問題です) 上記のような問題があったのですが、 数式を入力して下にオートフィルして 完成させたのですが、【問題の解答】を見た限りでは 「セル【C18】を「=IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE))」と修正する」 と書いてありました。 ですが、数式の「$B18」の部分で「列を固定にする」 意味はあるのでしょうか? 「$」はなくてもちゃんと機能してますし、 表も完成してるように思うのですが・・・ あと、これは商品コードが空白の場合にはエラーが 出ないのでいいのですが、商品コードとは関係ない 文字列も入れた場合(間違った文字列を入れた場合)に エラーがでないようにする事もできますでしょうか?