Excel関数に関する質問です。

このQ&Aのポイント
  • Excel関数に関する質問です。横のセル「対象*」セルに対する項目と値があるとします。横のセル1列分が1セットです。
  • 重要な点は、1. それぞれのセル(「項*」、「値*」)の間に必ず「,」(コンマ)をつけて表示する。2. 「値*」セルの内容が、「None」の場合、その部分は表示しない。3. 計算結果を出すセルは「対象*」ごとに必ず同じセルでなければならない。4. 「対象*」セルによって項目があるもの(「値*」が「None」以外)と、ないもの(「値*」が「None」)の場所は決まっていない。
  • マクロや簡単なプログラムは知っているので作れると思いますが、関数のみでできるようにしたのですがどのようにするのか具体的に教えていただけないでしょうか?回答で分からなかった点は、改めて補足で質問すると思いますがそのときはよろしくお願いします。回答よろしくお願いします。
回答を見る
  • ベストアンサー

Excel関数に関する質問です。

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

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

  • ベストアンサー
回答No.1

とりあえず値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,"") と書いてフィルハンドルで下にドラッグですね。

miya_HN
質問者

お礼

回答ありがとうございます。 >=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) これで、思ったとおりの計算結果が出ました。 ありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.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)

miya_HN
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

最後にカンマを付けないということになれば式は長くなってしまいますね。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)

miya_HN
質問者

お礼

今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。

関連するQ&A

  • エクセルの関数(最後の値を返す)

    A1からJ65までの範囲のなかで (計算式などが入ってるセルも含まれてます) J列の最後に表示されている値を返したいのですが どんな計算式をしていいか 調べてもわからず困っています。 J35のときもあればj40のときもあります。 ちなみにJ列にはすべて 計算式がはいってます。 その計算結果が表示されているセルと空白のセルがあります。 (J1からJ40まで値表示J41からしたは空白表示のときJ40を返したい このときA列はA1からA40までは値が入力されてますがA41からしたはまったくの空白です)

  • Excel関数コピーについて

    Excel関数を横にコピーした時に、 その前の関数の次の列から計算式を作成したいのですが可能でしょうか? D1セルには、=SUM(J2:L2)が入ります。 (B1の関数であれば、A1がC2まで計算しているのでD2からはじまります) A1セル B1セル C1セル     ・・・ =SUM(A2:C2) =SUM(D2:F2)  =SUM(G2:I2)  ・・・ 教えてください。

  • EXCEL表の関数の質問です。

    EXCEL表で作った1列の数字の合計をするとき、いつもSUMの関数で合計をしてますが、今回1列のそれぞれのセルに計算式がはいっている(たとえば\180×2=¥360とか)ものや、数字だけ(¥500とか)はいっているものが混在しています。これではSUM関数で合計できません。このセルの表示は会社の指示でそのとうりでしか表示できず困っております。このような列のそれぞれのセルの合計を出すにはどうしたらいいでしょうか。どなたか詳しい方、おしえてください。お願いします。

  • EXCEL関数について

     A   B    1   3.4  2   5  4   9  7   6  □   □ ※上記の図は、A1セルに1、B1セルに3.4、A2セルに2、B2セルが5・・・の数値が入力されていることを表しています。 質問 A5セルに、A列を合算した値【14】+B列を合算した値23.4の、10の位【2】を足した値を表示したい→【16】と表示したい B5セルにはB列を合算した値【23.4】の1の位以下の数値を表示したい→【3.4】と表示したい。 つまり、(B1+B2+B3+B4)が10以上になれば、その値の10の位の数値を、A5セルに足したいのです。 このような事をするには、どういった関数を組めば可能でしょうか。 説明がわかりずらく、申し訳ありません。 どなたかおわかりになる方がおられましたら、ご教授下さい。 よろしくお願い致します。  

  • エクセル(excel)の計算式(関数)について

    エクセル(excel)の計算式(関数)でよいアイディアがありましたら教えてください。 1行目は項目行です。 セルA1から右に15列=セルO1まで、 a | b | c | d | e | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 と入っています。 2行目からデータとして、 セルA2から右に5列=セルE2まで、 4 | 2 | 2 | 1 | 1 と入力したとします。(データ例(1)) あるいは、 セルA3から右にセルE3まで、 6 | 3 | 0 | 0 | 0 と入力したとします。(データ例(2)) 1つのデータの5個の数字のルールは2つで、 「合計で10以下である。」 「左から順に小さくなるか、同じ数字となる。」 です。 (目的は、) このとき、F列からO列にかけて、 データ例(1)のケースでは、 a | a | a | a | b | b | c | c | d | e データ例(2)のケースでは、 a | a | a | a | a | a | b | b | b | と表示されるように、 つまり、項目行の下にある数だけ、その列の1行目の記号を 1(F列)から右に向かって順に埋めていくような、 F列からO列までの2行目以下に入れる適当な計算式(関数)は ないでしょうか。 拙い説明で申し訳ありません。どなたかよい考えをお持ちの方がいらっしゃいましたらと存じます。 どうぞよろしくお願い致します。

  • Excel関数

    エクセルでA1のセルに計算式を入れB1のセルに計算結果を少数第二位で 四捨五入されたものを表示する関数を教えて下さい。 それに、後で計算式の変更も結果に反映されるようにしてたいです。 よろしくおねがいします。

  • Excelの関数について

    [C1のセル値]-[A1またはB1のセル値] を使って計算したい場合の計算式を教えて下さい。 A列、B列、C列には具体的な数値を入力します。 D列にその結果を表示させる関数を入力したい。 と考えています。 但し、以下の条件を満たす事が必須となります。 (1)A、B、またはCのセルが未入力の場合はDは空白セルのまま。 (2)A、Bいずれかの一方が入力されている場合はCの値を使って計算し結果を表示。 (3)A、Bいずれも入力されている場合はBを優先してCの値を使って計算し結果を表示。 よろしくお願いします。

  • ExcelのLarge関数で抽出したセルの行/列名

    表からLARGE関数を使い上位5までの値を検索します。 この時、該当の値のセルの行項目、列項目も同時に表示したいです。 例: 検索されるセルの値=5 行名=あさひ 列名=富士 の場合に、 1セル内で、「5:あさひ/富士」という結果を返したいです。 方法をご教授ください。

  • EXCEL2022でVLOOKUP関数の「検索値」に><等の不等式を使って、「近似値」を使いたい!

     EXCEL2022でVLOOKUP関数の「検索値」に、ヘルプでは「近似値」が使えるとあるので、><等の不等式を使って、範囲指定を行い、複数の項目を抽出してきたい!  例として、 (1)2<「検索値」<30、程度で、60項目程を選び出したうえ、 (2)なおかつ、その60項目の中から、オートフィルタ機能を使用し   て、「トップテン」上位の10項目を表示させる方法  を模索中です。  ★実際に、このVLOOKUP関数を使用して、プログラムを作成されている方は、  「検索値」に『範囲指定を行い、複数の項目を抽出できない』ようだと、★たった一つのみの単独の値に対応する単一項目★しか抽出できない為、広範な使用に適さず、従って、たいへん使い勝手が悪い、使用用途の限定される、いわゆる”退屈な機能”とならないでしょうか?  ヘルプより、  VLOOKUP 関連項目 指定された範囲の左端の列で特定の値を検索し、範囲内の対応するセルの値を返します。  書式 VLOOKUP(検索値,範囲,列番号,検索の型) 検索値 範囲の左端の列で検索する値を指定します。検索値には、値、セル参照、または文字列を指定します。  横に”行”を検索して、一致する項目を表示させるものでは、HLOOKUP関数というものも在りますが、私の意図する”使用方法”を満足させる”関数”、343もあれば、一つ位はな~い"かんすぅ~"?(意図した訳ではないのに、やや、字面が、難しい言葉ばかりになってしまったので、"和み系の、普段は言わないジョーク"をネットなので、書き込んでしまいました。やや反省。)(^_^;)

  • Excel2002でセルへの数値代入

    使用しているのはExcel2002なんですが 関数などを使用して空白セルへ数値及び文字列を 代入することって可能でしょうか? 例を挙げると、 セルA1に7という値を入力すると、 セルC1にある関数が「10-A1」という計算を行って セルB1に3という値を返すようにしたいのです。 また、セルB1に4という値を入力すると、 セルC1で計算を行い、セルA1には6が返る。 このようにセルA1、B1ともに、人の手で数値の 入力が行われる可能性があるので、表示部分のセルに 関数式を記述せず、空白としておく。 C1に入力する関数は IF(B1="",10-A1,10-B1) として、この結果を、またIFなどを使って 空白の方のセルに入力してあげればいいかなー というところまでは考え付いたのですが・・・ どなたか教えてください。

専門家に質問してみよう