• ベストアンサー

ifで10個以上の条件判断がしたい

winXPでエクセル2002です。 たとえばA1のセルに "あ"と入力したら"AAA"を、 "い"と入力したら"BBB"を、 "う"と入力したら"CCC"を、 "え"と入力したら"DDD"を、 "お"と入力したら"EEE"を、 "か"と入力したら"FFF"を、 "き"と入力したら"GGG"を、 "く"と入力したら"HHH"を、 "け"と入力したら"III"を、 "こ"と入力したら"JJJ"を、 "さ"と入力したら"KKK"を、 "し"と入力したら"LLL"を、A2のセルに表示をさせたいのです。 判断に使うセルは一箇所だけです。 ifをつかって =if(a1="あ","AAA",if(a1= ・・・ と書いていくと11個目のifを使ったときにエラーが出てしまいます。 どうやったら10個以上の場合の条件判断ができるのでしょうか よろしくお願いします。

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

  • ベストアンサー
  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.2

if文でという条件なのでしょうか? 関数VLOOKUPを使用するか? マクロとしてif文にするか? マクロなら、if文よりもSelect Case文ですね。

muushuke
質問者

お礼

ありがとうございます。 マクロをちょっといじってみたら、できそうです!

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

>書いていくと11個目のifを使ったときにエラーが出てしまいます。 IFのネストは数に制限があります。入力の内容にもよりますが VLOOKUP,HLOOKUP,LOOKUP,CHOOSE等が使えます。 1例 =CHOOSE(FIND(A1,"あいうえおかきくけこさし"&A1,"AAA","BBB","CCC"...,"LLL","") =LOOKUP(A1,{"あ","い","う"...,"し"},{"AAA","BBB","CCC"...,"LLL"})

muushuke
質問者

お礼

ありがとうございます。 いろいろな方法があるんですね。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

#3です すみません。間違いがあります > =MID("AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLL",(SEARCH("あいうえおかきくけこさし",a1,1)-1)*3+1,3) =MID("AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLL",(SEARCH(a1,"あいうえおかきくけこさし",1)-1)*3+1,3) です

muushuke
質問者

お礼

ありがとうございます。 いろいろな方法があるんですね

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

お勧めとしてはLookup関数系を使用することだと思います。 上記の通りだけだとすると =MID("AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLL",(SEARCH("あいうえおかきくけこさし",a1,1)-1)*3+1,3) でも実現可能です。

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.1

そういう場合はVLOOKUP関数を使うべきです。 http://www.atmarkit.co.jp/fwin2k/win2ktips/317vlookup/vlookup.html

muushuke
質問者

お礼

ありがとうございます。 今回は別なセルやシートは使えないのです。。。 言葉足らずですみません。

関連するQ&A

  • EXCEL VBA split関数について

    Excel VBA初心者です。 split関数についてどなたか教えていただけないでしょうか。 aaa,bbb,ccc,eee fff,ggg,hhh,iii jjj,kkk,lll,mmm というデータがあるとして、そこから aaa bbb fff ggg jjj kkk これだけ(左から2個分)を抜き取りたいのですが可能でしょうか? カテ違いな質問でしたらスミマセン。

  • C言語による「テキストファイルの読み書き(fprintf)」について

    C言語による「テキストファイルの読み書き(fprintf)」について質問です ずぶの初心者ですが、既知のファイルの1行目に指定した文字列を付加させるプログラムを作りたいと思っています。 以下のように作りました。 ------------------------------------------------------------ #include <stdio.h> int main(void) { FILE *fp; fp = fopen("test.csv","r+"); fprintf(fp,"コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56\n"); fclose(fp); return 0; } ------------------------------------------------------------ このとき「test.csv」の内容が以下のようであったとします。(容量は1MBくらいです。) 001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj この状態でプログラムをコンパイルして実行すると、「test.csv」の内容が以下のようになってしまいます。(一行目が消える) AAA,BBB,CCC,DDD,EEE 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj またcsvの行が増える度に妙な挙動になっていきます・・・(一行あいたり、先頭行が5行ほど消えたり) 希望する動作としては コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56 001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj のようになるようにしたいのですがどのようにすればよいのでしょうか。 よろしくお願いします。 (使用ソフト:Borland C++ Compiler, Cpad) 参考にしたサイトの項目:http://homepage3.nifty.com/mmgames/c_guide/17-01.html

  • sedで文字列の抜き出し

    ある一部分の文字列を抜き出したく、sedを使用したいと思って試行錯誤しております。 ↓あるファイル内の文字列 aaa bbb=ccc:ddd=eee:fff=ggg: aaa bbb=hhh:ddd=iii:fff=jjj: ※aaaとbbbの間はスペースです。 ※bbb,ddd,fffはある一定のキーワードです。 ※ccc,eee,ggg,hhh,iii,jjjはバラバラの文字列で長さも一定ではありません。 【質問】 上記の文字列の中でddd=の後の文字列(eee,iii)のみを抜き出したいです。 以下のようなsedを試してみましたが、 eee:fff=ggg iii:fff=jjj が抜き出されてしまいます。 sed 's/.*:ddd=\(.*\):\(.*\)$/\1/' 恐れ入りますが、皆様の知恵をお貸し下さい。

  • VBAで特定の値がある行を連続コピーしたい

    Excel 2003 OS XP Professional SP3 VBAは自分でコードは組むことはできませんので見よう見まねでやっているレベルです。 A B C D E の列があり、行の1行目はタイトル行になっています。  A  B  C   D  E ***  ***  ***  ***  *** ’  AAA  BBB  CCC  DDD 111 222 333 '   EEE  FFF  GGG  HHH '   III  JJJ  KKK  LLL 444 555 '   MMM  NNN  OOO  PPP A列にカンマがある行にはB~E列に値が入力されていて、A列にカンマ以外の値が入力されている 場合にはB~Eには何も入力されていません。 A列にカンマ以外の値の時、カンマのある行のデータを次のカンマのある行までフィルハンドルをドラッグしてコピーするよう にしたいです。  A  B  C   D  E ***  ***  ***  ***  *** ’  AAA  BBB  CCC  DDD 111  AAA  BBB  CCC  DDD 222  AAA  BBB  CCC  DDD 333  AAA  BBB  CCC  DDD '   EEE  FFF  GGG  HHH '   III  JJJ  KKK  LLL 444  III  JJJ  KKK  LLL 555  III  JJJ  KKK  LLL '   MMM  NNN  OOO  PPP   sub 連続コピー() Dim r As Long Dim n As Long r = 2 n = r + 1 Do While Worksheets("sheet1").Cells(r, 1) <> "" If Worksheets("sheet1").Cells(r, 1).Value = Worksheets("sheet1").Cells(n, 1).Value Then r = n n = n + 1 Else Range(Cells(r, 2), Cells(r, 5)).Copy Range(Cells(n, 2), Cells(n, 5)) n = n + 1 End If Loop End Sub 自分なりに考えてみましたが、ぜんぜん動きません。 どなたかご教授をお願いします。

  • エクセルのマクロについて

    エクセル97のマクロについて教えてください。 下のようなエクセルシートがあると仮定します。 このシート全体を選択して用意してあるボタンを押すと、マクロが流れるようにします。 マクロの中身は、項目1~4の値が同じであれば、同じデータを一つにするというものを考えています。 たとえば下の例の場合、追番でいえば2と4のデータは同じなので、マクロ処理にかけると、追番の大きい4のデータは消え、2のデータの"200"項目にフラグ1が追加されるようにしたいのです。 項目の値が同じであれば、いくつでもデータを統一したいと考えています。 ================ エクセル シート例 ================================== 追番_項目1_項目2_項目3_項目4_100_200_300_400 ← 見出し ----------------------------------------------------------------- 1****AAA****BBB****CCC****DDD****1*********1****1**** 2****EEE****FFF****CCC****GGG****1**************1**** 3****HHH****FFF****KKK****JJJ****1****1****1********* 4****EEE****FFF****CCC****GGG****1****1*********1**** ↓ マクロ処理後 追番_項目1_項目2_項目3_項目4_100_200_300_400 ← 見出し ----------------------------------------------------------------- 1****AAA****BBB****CCC****DDD****1*********1****1**** 2****EEE****FFF****CCC****GGG****1****1*********1**** 3****HHH****FFF****KKK****JJJ****1****1****1********* =================================================================== 注:見出しの_とデータの中の*は空白を生めるためのもので、データとはまったく 関係ありません。 なにぶんエクセルVBAは初心者同然なもので... よろしくお願い致します。

  • Excelで同一のデータを抽出して横並びに

    A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  ccc     4 bbb      12  ddd     6 ccc     10  aaa     22 ddd     6   eee     10 eee     5   bbb     7 fff       8 kkk 9 kkk 7 lll 4 上記のようなデータを 以下のように同じ商品コードを横並びに表示させたいのですが どういったcountifとかで試したのですが上手くいかず、どのような関数を使えば可能でしょうか? A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  aaa     22 bbb      12  bbb     7 ccc     10  ccc     4 ddd     6   ddd     6 eee     5   eee     10 fff       8 kkk 7 kkk 9 lll 4 宜しくお願い致します。

  • VBAでCSV内にある改行を取る方法

    あるシステムが吐くcsvファイルの項目の中に改行が入っているものがあります。 例) 01,aaa,bbb(改行)bbb,ccc(改行) 02,ddd,eee,fff(改行) 03,ggg(改行)ggg,hhh,iii(改行) このCSVファイルをエクセルのマクロで読み込んでシートに展開したい のですが、項目中にある改行で別レコードを認識してしまいます。 結果) A B C D ---+---+---+--- 01 aaa bbb  bbb ccc 02 ddd eee fff 03 ggg ggg hhh iii これを以下のようにしたいのですが・・・ A B C D ---+------+------+---- 01 aaa bbbbbb ccc 02 ddd eee fff 03 gggggg hhh iii どうやればよいでしょうか? ご教授お願いいたします。

  • Excel2000 データの振り分けと配列変換について

    シート1にデータを一気に入力してあります。 第1段階、所属ごとに所属1は所属1のシート、所属2は所属2のシートというようにシートに振り分けをしたい。 第2段階、振り分け後データごとに2列になるように印刷をしたい。 この様に入力されているデータを A   B   C   D 番号 名前   所属  1 AAA  1  2 BBB  2  3 CCC  1  4 DDD  3  5 EEE  4  6 FFF  5  7 GGG  6  8 HHH  3  9 III  4 10 JJJ  6  ・  ・  ・ 所属ごとにシートに振り分けて、2列 任意の単位で(この場合では、5単位ごと)になるように印刷したい。 所属1のシート 番号 名前   所属 番号 名前   所属  1 AAA  1   6 FFF  1  2 BBB  1   7 GGG  1  3 CCC  1   8 HHH  1  4 DDD  1   9 III  1  5 EEE  1  10 JJJ  1 技が無いため、切り張りしていますが、なにか良い方法がありましたら教えてください。

  • SQL文を教えてください

    いつもお世話になっております。 ウェブサイトを作っているのですが、以下のようなデータを表示するのに良いSQL文が分からず悩んでいます。 ID | DATE     | DATA --+----------+----- 1 | 2010-11-11 | aaa 2 | 2010-11-11 | bbb 1 | 2010-11-10 | ccc 3 | 2010-11-12 | ddd 3 | 2010-11-11 | eee 4 | 2010-11-10 | fff 1 | 2010-11-12 | ggg 2 | 2010-11-12 | hhh 1 | 2010-11-12 | iii 3 | 2010-11-12 | jjj 1 | 2010-11-09 | kkk 1 | 2010-11-09 | lll 1 | 2010-11-08 | mmm 1 | 2010-11-08 | nnn 1 | 2010-11-07 | ooo 1 | 2010-11-07 | ppp 1 | 2010-11-06 | qqq 3 | 2010-11-05 | rrr 2 | 2010-11-13 | sss 5 | 2010-11-08 | ttt 6 | 2010-11-05 | uuu 7 | 2010-11-04 | vvv 8 | 2010-11-03 | www 9 | 2010-11-02 | xxx 10| 2010-11-01 | yyy 11| 2010-10-30 | zzz 上のようなテーブルから、各IDを10件まで日付順に取り出すことはできるでしょうか? 具体的には、1つのページに以下のように表示したいのです。 2 | 2010-11-13 | sss 2 | 2010-11-11 | bbb 1 | 2010-11-12 | ggg 1 | 2010-11-11 | aaa 1 | 2010-11-10 | ccc 1 | 2010-11-12 | iii 1 | 2010-11-09 | kkk 1 | 2010-11-09 | lll 1 | 2010-11-08 | mmm 1 | 2010-11-08 | nnn 1 | 2010-11-07 | ooo 1 | 2010-11-07 | ppp 3 | 2010-11-12 | ddd 3 | 2010-11-11 | eee 3 | 2010-11-05 | rrr 4 | 2010-11-10 | fff 5 | 2010-11-08 | ttt 6 | 2010-11-05 | uuu 7 | 2010-11-04 | vvv 8 | 2010-11-03 | www 9 | 2010-11-02 | xxx 10| 2010-11-01 | yyy ・各IDのうち、最も新しい日付のものが上にくる ・表示するIDは10件まで ・表示はIDごとにまとめて行う ・一つのIDに属するデータは10件までしか取り出さない 上記のことを実現する方法をご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • Excelで、自動でデータのナンバー付けをしたい

    エクセルで、商品管理をしているのですが、以下のようなエクセルファイルのデータをフィルタ後(件数が0より多いものでフィルタをかけた後)、項目のナンバーを再び1から順につけていきたいと思っています。 ------------------エクセルファイル------------------ 項目  商品名  商品ID   単価   件数   金額  1    AAA   BBB    ¥2,000   1    ¥2,000  2    CCC   DDD    ¥1,200   19    ¥22,800  3    EEE   FFF     ¥1,000   0    ¥0  4    GGG   HHH    ¥1,000   3    ¥3,000  5    III     JJJ     ¥500    0    ¥0  6    KKK   LLL     ¥400    2    ¥800                          小計   ¥28,600 --------------------------------------------------- 上記のファイルを、件数が0より多いものでフィルタをかける。 つまり、エクセルファイルは、以下のようになります。 ------------------エクセルファイル------------------ 項目  商品名  商品ID   単価   件数   金額  1    AAA   BBB    ¥2,000   1    ¥2,000  2    CCC   DDD    ¥1,200   19    ¥22,800  4    GGG   HHH    ¥1,000   3    ¥3,000  6    KKK   LLL     ¥400    2    ¥800                          小計   ¥28,600 --------------------------------------------------- この場合、項目のナンバーが1、2、4、6、という順番になっているので、 これを1、2、3、4、という順番に置き換えていきたいと思っています。 データ数が少なければ手動でやっても良いのですが、 データ数が膨大な量になるので、これを自動で出来るようにしたいと思っています。 VBAで挑戦を試みましたが、なかなか上手くいきませんでした。 何か上手くできる方法はございませんか? どなたかご教授をお願いします。             

専門家に質問してみよう