エクセルの関数に関してです。


A,B,C,D,E,F,G
2
3
4
5
6

「A2」で、
「あ」を選んだら、B2+C2のconcatanate
「い」を選んだら、B2+C2+D2のconcatanate
「う」を選んだら、B2+C2+E2のconcatanate
「え」を選んだら、B2+C2+F2+C2のconcatanate
「お」を選んだら、B2+C2+E2+B2のconcatanate
「か」を選んだら、B2+C2+D2+B2のconcatanate
「き」を選んだら、B2+C2+D2+C2のconcatanate
が、「G2」に入るようにしたいです。

「A3」以下でも、同じように、
「あ」を選んだら、B3+C3のconcatanate
「い」を選んだら、B3+C3+D3のconcatanate
「う」を選んだら、B3+C3+E3のconcatanate
「え」を選んだら、B3+C3+F3+C3のconcatanate
「お」を選んだら、B3+C3+E3+B3のconcatanate
「か」を選んだら、B3+C3+D3+B3のconcatanate
「き」を選んだら、B3+C3+D3+C2のconcatanate
が、「G3」に入るようにしたいです。

concatanateの組み合わせは、15パターン程あります。

このようにするには、どのような関数を、G列に入れたら良いでしょうか?

必ずイルカ賞を進呈させて頂きます。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/04/15 20:30:47
  • 終了:2009/04/16 15:18:16

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692009/04/15 21:41:45

ポイント23pt

15パターン程あるというところが引っかかったので違う方法を紹介します。

IFによる条件分岐は多くなるとわかりづらいので対応表を作る方法です。

次のようにH列以降に対応表を作ります。(どこでもいいです)


H I J K
2 =B2&C2 =B2&C2&D2 =B2&C2&E2 =B2&C2&F2&C2
3 =B3&C3 =B3&C3&D3 =B3&C3&E3 =B3&C3&F3&C3

3行目以降は2行目のコピーです。


G2セルの数式を

=IF(ISERROR(HLOOKUP(A2,$H$1:$N$100,ROW(),FALSE)),"",HLOOKUP(A2,$H$1:$N$100,ROW(),FALSE))

として下にコピーします。

式中の$H$1:$N$100は先ほどの表を指定します。

こちらのHLOOKUPを使った方法のほうがパターンが多くなると対応表があるので楽だと思います。

http://www3.tokai.or.jp/excel/kansu/hlookup.htm

id:martytaka

ありがとうございます。

ですが「あ」を選んだら、「い」を選んだらの部分がないような。。

ん?

これだけでは無理ということでしょうか?

2009/04/16 14:58:05

その他の回答(3件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692009/04/15 21:41:45ここでベストアンサー

ポイント23pt

15パターン程あるというところが引っかかったので違う方法を紹介します。

IFによる条件分岐は多くなるとわかりづらいので対応表を作る方法です。

次のようにH列以降に対応表を作ります。(どこでもいいです)


H I J K
2 =B2&C2 =B2&C2&D2 =B2&C2&E2 =B2&C2&F2&C2
3 =B3&C3 =B3&C3&D3 =B3&C3&E3 =B3&C3&F3&C3

3行目以降は2行目のコピーです。


G2セルの数式を

=IF(ISERROR(HLOOKUP(A2,$H$1:$N$100,ROW(),FALSE)),"",HLOOKUP(A2,$H$1:$N$100,ROW(),FALSE))

として下にコピーします。

式中の$H$1:$N$100は先ほどの表を指定します。

こちらのHLOOKUPを使った方法のほうがパターンが多くなると対応表があるので楽だと思います。

http://www3.tokai.or.jp/excel/kansu/hlookup.htm

id:martytaka

ありがとうございます。

ですが「あ」を選んだら、「い」を選んだらの部分がないような。。

ん?

これだけでは無理ということでしょうか?

2009/04/16 14:58:05
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692009/04/15 21:08:11

ポイント23pt

G2の数式を

=IF(A2="あ",B2&C2,IF(A2="い",B2&C2&D2,IF(A2="う",B2&C2&E2,IF(A2="え",B2&C2&F2&C2,IF(A2="お",B2&C2&E2&B2,IF(A2="か",B2&C2&D2&B2,IF(A2="き",B2&C2&D2&C2,"")))))))

組み合わせにパターンが無いので、それぞれにIFで判別するのが簡単です。

15パターンもあると大変ですが。

http://q.hatena.ne.jp/

id:kaiton No.3

kaiton回答回数260ベストアンサー獲得回数342009/04/15 22:51:02

ポイント22pt

CONCATENATE関数は使わない方法で、いきなりG2ひとつで計算する方法ではないです。


G2=INDIRECT(A2) として下にコピーします。

これだけだとエラーになりますので、以下の作業表を別に作成します。


G列から1列空けたI列からでも(どこからでもOK)

I J K L M N O
1
2 =B2&C2 =B2&C2&D2 =B2&C&2E2 =B2&C&2F2&C2 =B2&C2&E2&B2 =B&2C2&D2&B2 =B2&C2&D2&C2
3 ..

この式を下にコピーします。

I1など1行目には、A列のデータ(「あ」を選んだら)の内容を入力します。


↓を参考に、I1からO99(最終行まで)選択して、「挿入」→「名前」→「作成」で「上端行」にチェックを入れOK

http://www.excel-jiten.net/formula/name_range_row_col_index.html


「15パターン程あります。」と書かれているので、O列より右に追加して、2行目以降に式を入れて、

名前をつければ大丈夫だと思います。

http://www.relief.jp/itnote/archives/000815.php

id:taknt No.4

きゃづみぃ回答回数13539ベストアンサー獲得回数11982009/04/15 23:12:08

ポイント22pt

IF文でOKです。

=IF(A2="あ",CONCATENATE(B2,C2))+IF(A2="い",CONCATENATE(B2,C2,D2))+IF(A2="う",CONCATENATE(B2,C2,E2))+IF(A2="え",CONCATENATE(B2,C2,F2,C2))+IF(A2="お",CONCATENATE(B2,C2,E2,B2))+IF(A2="か",CONCATENATE(B2,C2,D2,B2))+IF(A2="き",CONCATENATE(B2,C2,D2,C2))

このようにすればいいですよ。

IF文の中にIF文を入れる 入れ子にすると その制限がありますので、入れ子にせず

それぞれ 「あ」の時の連結した文字列、「い」の時の連結した文字列というのを出してそれを

すべて連結するようにすればいいのです。

「あ」の時は、ほかの条件は 何もない状態なので いくら連結しても 「あ」の分にしかなりませんから。

セルに入れられる文字数の制限まで できます。

もし、文字数が オーバーしたら セルを 分けて それぞれ を 最後に連結するようにすればいいでしょう。


http://q.hatena.ne.jp/1239795045

  • id:SALINGER
    kaitonさんの回答を見ればわかったと思いますが、対応表の1行目が抜けてました。
    同じようにあいうえお・・・と入ります。
    kaitonさんの回答を見て、名前を一括でつけれる方法があったのですね。勉強になりました。
  • id:kaiton
    http://www.relief.jp/itnote/archives/001147.php
    や日記で書いたように、関数のネストレベルは7の制限があります。
    15パターンに対応しようとすると、IF関数でもG列だけでは解決できないので、
    方法を日記↓に書いています。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません