文字と数値範囲が混ざっているデータの分類分け

このQ&Aのポイント
  • エクセル2002を使用している場合、文字と数値範囲が混ざっているデータを分類する方法について教えてください。
  • データは、文字として「A世帯」「B世帯」「C世帯」と、数値として「0」から「9999999」までのランダムな値が入っています。
  • 数値の場合は、=IF(C1<72000,4,IF(C1<180000,5,IF(C1<4590000,6,IF(C1<9999999,7,""))))のような式を使えばよいですが、文字が入る場合はどのようにすればよいですか?
回答を見る
  • ベストアンサー

文字と数値範囲が混ざっているデータの分類分け

エクセル2002を使用しています。 基礎となるデータには、各人の分類もしくは数値データが入っています。 それを、別のセルにランクのように分類させたいのです。 例えば、そのデータはC列に300行ほど入っているとします。 データは、文字として、 A世帯 B世帯 C世帯 その他に数値として 0 から 9999999 まで、ランダムに入っています。 D列に、 A世帯          なら 1 B世帯          なら 2 C世帯          なら 3 0から71999        なら 4 72000から179999     なら 5 180000から458999     なら 6 459000から9999999    なら 7 と、したいのです。 数値だけなら、 =IF(C1<72000,4,IF(C1<180000,5,IF(C1<4590000,6,IF(C1<9999999,7,"")))) でよろしいかと思います。(違うでしょうか) 文字が入ると、どのようにすべきか教えてください。 よろしくお願いします。

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

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

例データ A列  B列(式の結果) A所帯 1 A所帯 1 B所帯 2 C所帯 3 2 4 81000 5 182000 6 440000 6 460000 7 890000 7 1000000 該当なし 2000 4 90000 5 表 E1:F8 A所帯 1 B所帯 2 C所帯 3 0 4 71999 5 179999 6 458999 7 999999 該当なし ーーー 式 B1に =IF(ISERROR(VLOOKUP(A1,$E$1:$F$3,2,FALSE)),VLOOKUP(A1,$E$4:$F$8,2,TRUE),VLOOKUP(A1,$E$1:$F$3,2,FALSE)) B2以下に式を複写。 A列の未入力セルに対応するB列も4が出る。 防ぐのはIFをかぶせて避けられるが、長くなるので略。 ーー >=IF(C1<72000,4,IF(C1<180000,5,IF(C1<4590000,6,IF(C1<9999999,7,""))))でよろしいかと思います。(違うでしょうか) あえて言えば、違います。IFを連ねるのは、関数を幅を広げて勉強してない証拠と私は思います。

saitama090
質問者

お礼

ありがとうございました。 大変勉強になりました。

関連するQ&A

  • EXCEL関数 数値○○○.○○○○を二つに分類したい

    タイトルにも書きましたが、エクセルシートで○○○.○○○○という、途中コンマで区切られた7桁の数値を入力すると、二つに分類し、分類に応じた文字列が表示されるようにしたいのです。  367.2000 と入力すると A  456.3010 と入力すると B といった感じです。 分類する数値は355番台はA、340番台はBといったように、ある程度まとまりはあります。 IFとVLOOKUPの組み合わせで、ある数値を入力すると決まった文字列が出るようになる関数はわかるのですが、7桁全部を入力して分類、という関数(の組み合わせ)があればと思い質問させていただきました。 拙い文章で申し訳ありません。補足が必要でしたらおっしゃってください。 よろしくお願いいたします。

  • 限定範囲内の数値に対するRANK関数について

    エクセルについての質問です。    A  B   C  D 1    11 22 33 2    10 20 30 3    15 25 36 4    12 24 36 5    18 27  A列にRANK関数を使い「順位を入れたい」のです。 ただし以下のような決まりがあります。    (1)D列にて値が33以上の数値を対象とし、    (2)B列の数値を降順にランク付け 結果としては以下のようになる数式を目指していますがそのような関数はできますでしょうか。    A   B   C  D 1  3  11 22 33 2     10 20 30 3  1  15 25 36 4  2  12 24 36 5     18 27  対象がD列だけの数式でしたら 例えばA1のセルに  =IF(OR(D1<33,D1=""),"",RANK(D1,$D$1:$D$5,FALSE)) と入力し、他のA列へコピーすれば良いと思うのですがさらにその結果を対象とした数式がどうにもよくわかりません。 お分かりの方いらっしゃいましたら教えて頂けますでしょうか。

  • Excelで、数値データとして参照したいのに、文字列データとしてしか参照してくれません

    Excelで、ある数式セルに表示されたデータを、数値データとして参照したいのですが、どうやっても文字列データとしてしか認識してくれません。 具体的に書くと、 例えばセルA1に、FIND関数で他のセルから抜き出した半角数字のみのデータを表示しているとします。 そのA1の数値を、今度はセルA2で、 if(A1=1000,A1*2,A1/2) などと数式で参照したい時に、私のExcel(2002です)では、どうやってもA1=1000という条件式をきちんと判別してくれません。どうやら、FIND関数で抜き出したために文字列データとして扱われてしまっているようです。 その証拠に、A1が実際に「1000」の時に if(A1="1000",A1*2,A1/2) という風に1000をダブルクォーテーションで囲んで式を書くと、きちんとA1*2を実行してくれます(つまり、A1が実際に1000の時でも条件式の1000をダブルクォーテーションで囲まないと、きちんと判別してくれないという事です)。 この状態から抜け出せずに、どうにも困っています。 どうにかA1の「1000」というデータを文字列でなく数値データとして条件式で利用できるように出来ないものでしょうか。 乱文ですみませんが、よろしくお願いいたします。

  • エクセルで行数の異なる2つの列の数値を新しい列にコピーする方法

    はじめまして。 エクセルで質問があります。 A列に数値データ、B列に0 or 1のデータがあります。 Sum(B:B)=A列の行数です。 このデータを、C列に1のときはA列のデータを1行下にコピー、0のときは""にしたいと考えております。 結果C列はB列を同じ行数 if文でC1セルに =if(B1=1,A1,"") と打つと、B列に0が入った途端、A列の数値が進みすぎてしまいます。 B列=0のときA列を進まなくする方法はあるのでしょうか? たとえばB1=1, B2=0, B3=1のとき、C3にはA2の数値を入れたいのですが、A3になってしまいます。 よろしくお願いいたします。

  • エクセル2000で文字列から数値を抽出したい。

    エクセル2000で文字列から数値を抽出したい。 ワークシートのA列に下記の文字列が入力されています。 A1セル="123456 日本男子 54,321 7,654,321 12,345" A2セル="234567 東京都子 1,234 2,345 5,321" A3セル="345678 大阪太郎 99 689 9,876" データ間はスペースで区切られています。 後方2番目の数値をB列に取出す方法を教えて下さい。 B1セル=7,654,321 B2セル=2,345 B3セル=689 よろしくお願い致します。

  • Excelで数値データを範囲別に分類したい。

    Excel初心者です。収穫した果実を重量別に自動で分類する 表をつくろうと思います。A B C のどの範囲に該当するか 自動判定したいです。Aの範囲でAと表示させる式はできましたが A B Cの3範囲に分類する数式が分かりません。 添付画像の赤のセルに入れるべき数式を教えて下さい。 あとA B  C がそれぞれいくつあるかを求める方法、あるいは 関数があれば教えて下さい。

  • EXCELでA列記載の数値に対応するB~F列のデータをG列に返すには?

    A1からA10のセルに列順を示す1から5までの数値がランダムに入っています。 B1からF10までのセルにデータ(文字列または数値)が入っています。 B列を1列目、以下C~F列を2~5列目として、G列にA列の数値に対応する列のデータを返したいのですが、数式を忘れてしまい困っています。初歩的なな質問で恐縮ですが至急どなたかご教示ください。 例えば下表のとおりA1の数値が1のときはB1を、4の時はE1をというようにです。 列順(1)  (2) (3) (4) (5)  A  B   C   D   E   F  G 1 山田 田中 斉藤 鈴木 佐藤 山田 4 池田 木戸 松尾 山口 近藤 山口 5  …  …  …  …  … 2  …  …  …  …  …

  • あるセルの文字列(または数値)を、他のセルのデータの一部として流用した

    あるセルの文字列(または数値)を、他のセルのデータの一部として流用したい場合について。 例えば、 セルA1に 0001 セルA2に K-0001 セルA3に T-0001 セルA4に W-0001 また、 セルB1に 0035 セルB2に K-0035 セルB3に T-0035 セルB4に W-0035 …C、D、E、、、と100項目ほど続く、という場合。 このようにデータを入力していきたい場合、 例えば、A列で、 A1の0001という数字を、A2~A4の中で、「データの一部として代入」したい時、 どういう風に自動化できますでしょうか? (例)K-0001 の中において、0001という数字は、データの一部として使われている。 ちょっとまとめてみますと、 1行目:●●●● 2行目:K-●●●● 3行目:T-●●●● 4行目:W-●●●● ●●●● は、同列の1行目の数値を、そのまま割り当てる というような記述ができたらなと思っているわけです。 つまり、1行目に●●●●を打ち込むだけで、その列の2行目以降について、適宜、自動的に必要な数値なり文字列が入力されるようにしたいわけです。 このようなことは、できませんでしょうか? マクロでも何でも結構です。 どなたか、お詳しい方、教えて下さい。 必ずお返事致します。

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

    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とか別の方法でも出来る方法教えていただきたいです。

  • 最下行にある数値または文字列を返す数式で困っています

       A   B 1  10   (=" ") 2  ×   (=" ") 3  17   (=" ") 4  28 5  × 6  (=B1) 7  (=B2) 8  (=B3) のように、A列に数値や文字列が入力されています。 A6以降は他のセルに入力されたものがこれから入力されます。 (A6以降は、見た目は空欄です) A列で数値であろうと文字列であろうと、とにかく見た目の最下行のセル に入力されている数値または文字列を返すにはどういう数式を使えば良いでしょうか? (上の例では、A5の×を返したいのです) =INDEX(A:A, MAX( IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)), IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))) では、A8(見た目は空欄)が返ってきてしまいますし、 =LOOKUP(10^5,I:I) では、A4の28が返ってきてしまいます。 どなたかご教授ください。 よろしくお願いします。

専門家に質問してみよう