プロが教えるわが家の防犯対策術!

Excel関数に関する質問です。
横のセル「対象*」セルに対する項目と値があるとします。横のセル1列分が1セットです。
添付画像にある、「対象*」セル、「項*」セル、「値*」セル(「*」は数字)がそれです。
「項*」セルには項目の名称、文字列が入ります。
「値*」セルには通常の数値とは異なり、コードのようなものが入ります。例えば「00-1234」。
「結果」セルに「項目1,値1,項目2,値2,項目3,値3~」のように計算結果を出します。

重要な点は、
■1. それぞれのセル(「項*」、「値*」)の間に必ず「,」(コンマ)をつけて表示する。
「結果」セルの例:項目1,値1,項目2,値2,~
■2. 「値*」セルの内容が、「None」の場合、その部分は表示しない。表示させないキーワードは空白や他の文字でもいいのですがとりあえず「None」で設定。
「結果」セルの例(1番目、3番目のセルが「None」の場合):
項目2,値2,項目4,値4
■3. 計算結果を出すセルは「対象*」ごとに必ず同じセルでなければならない。
例えば、「対象1」は「J1」セル、「対象2」は「J4」セルに最終的な計算結果を出す。
■4. 「対象*」セルによって項目があるもの(「値*」が「None」以外)と、ないもの(「値*」が「None」)の場所は決まっていない。

マクロや簡単なプログラムは知っているので作れると思いますが、関数のみでできるようにしたのですがどのようにするのか具体的に教えていただけないでしょうか?
回答で分からなかった点は、改めて補足で質問すると思いますがそのときはよろしくお願いします。
回答よろしくお願いします。

「Excel関数に関する質問です。」の質問画像

A 回答 (3件)

回答No2です。


次の式にしてください。
=LEFT(IF(C1="","",B1&","&C1&",")&IF(E1="","",D1&","&E1&",")&IF(G1="","",F1&","&G1&",")&IF(I1="","",H1&","&I1&","),LEN(IF(C1="","",B1&","&C1&",")&IF(E1="","",D1&","&E1&",")&IF(G1="","",F1&","&G1&",")&IF(I1="","",H1&","&I1&","))-1)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

回答者様の式を参考にさせてもらい、思ったとおりの計算結果が出ました。

ありがとうございました。

お礼日時:2010/02/05 19:55

最後にカンマを付けないということになれば式は長くなってしまいますね。

J1セルには次の式を入力して下方にオートフィルドラッグします。
=LEFT(IF(C1="","",B1&","&C1&",")&IF(E1="","",D1&","&E1&",")&IF(G1="","",F1&","&G1&",")&IF(I1="","",H1&","&I1),LEN(IF(C1="","",B1&","&C1&",")&IF(E1="","",D1&","&E1&",")&IF(G1="","",F1&","&G1&",")&IF(I1="","",H1&","&I1))-1)
    • good
    • 0

とりあえず値1が"None"でない時に項目1と値1をペアで返すとする


と、=if(値1<>"None",項目1&","&値1,"")となりますね。あとは、値
xが"None"でない時に項目xと値xをペアで返す直前にカンマを追加す
れば良さげなので、if(値x<>"None",","&項目x&","&値x,"")が延々
と&演算子で結合されていくだけ。

たとえばJ1に
=if(値1<>"None",項目1&","&値1,"")&if(値2<>"None",","&
項目2&","&値2,"")&if(値3<>"None",","&項目3&","&値3,"")&
if(値4<>"None",","&項目4&","&値4,"")
と書いてフィルハンドルで下にドラッグですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>=if(値1<>"None",項目1&","&値1,"")&if(値2<>"None",","&
>項目2&","&値2,"")&if(値3<>"None",","&項目3&","&値3,"")&
>if(値4<>"None",","&項目4&","&値4,"")

この場合ですと項目1が「None」の場合、最初にコンマが付いてしまうことになるので応用させてもらいました。
「J1」セルに、「None」の場合は空白で、それ以外は項目と値の間、最後にコンマを付ける計算をしました。

=if(値1<>"None",項目1&","&値1&",","")&if(値2<>"None",項目2&","&値2&",","")&~

「K1」セルに「J1」セルの計算結果の最後尾にコンマがある場合、削除する計算をしました。

=IF(RIGHT(J1,1)=",",LEFT(J1,LEN(J1)-1),J1)

これで、思ったとおりの計算結果が出ました。

ありがとうございました。

お礼日時:2010/02/05 19:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!