• ベストアンサー

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

inspecの回答

  • ベストアンサー
  • inspec
  • ベストアンサー率100% (2/2)
回答No.4

セルの設定が文字列でも中身のデータの型が数値の場合があります。 数値を入力してから、後から書式設定で文字列に変えるとそうなったりします。 VLOOKUPで検索するキーと参照する表のデータの型が一致していなければ表から取得できません。 セルの設定が文字列なら、データの型が数値の入っているデータでF2を押しEnterで再確定するとデータの型も文字になります。 データが多くてこのやり方では厳しい場合は、式でデータの型を修正することもできます。A1セルが修正対象のセルだとしたら、別のセルに=A1&""とし、これをA1に値の貼り付けすれば、文字列に変換できます。 検索するキー、検索する表ともにデータの型を文字列にしてみてください。

nerio
質問者

補足

ご回答ありがとうございます。 いろいろ考えてというか、結局のところ理由はまだ理解していませんがおっしゃる通り「セルの設定は文字列だが、中身のデータは違っている」という状態のようです。 >データの型が数値の入っているデータでF2を押しEnterで再確定するとデータの型も文字になります。 複数の見積もりを行追加して作った「年間の見積書の全て」(120行あります)をA列でソートしたものを見ると、1行目から85行目までと86行目から120行までの2つグループに分かれます。 この第2グループがうまくデータを持ってこられないので、F2+エンターで変換したところ形式が一致してデータを表示できました。 さして多くの行数ではなかったので、全行このやり方で変換したところきれいに揃いました。 どうもありがとうございました。

関連する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」の部分で「列を固定にする」 意味はあるのでしょうか? 「$」はなくてもちゃんと機能してますし、 表も完成してるように思うのですが・・・ あと、これは商品コードが空白の場合にはエラーが 出ないのでいいのですが、商品コードとは関係ない 文字列も入れた場合(間違った文字列を入れた場合)に エラーがでないようにする事もできますでしょうか?