エクセル関数でセルの内容を合わせる

このQ&Aのポイント
  • エクセルの関数を使用して、B列の空白から1が続いているセルまでをひとくくりとして、右側のセルに表示する方法を教えてください。
  • C列でひとくくりになるセルが下へ行ってしまい、希望する結果に表示されない問題があります。
  • 関数が組める方がいましたら、ご教授いただけますでしょうか。
回答を見る
  • ベストアンサー

セルの内容を合わせるエクセル関数

お世話になります。 エクセルの関数にて、下記条件を満たす関数が作れないので 分かる方がいましたら教えてください。 A列には文字列が、B列には空白か1の数字がランダムに(1番上の行は必ず空白セル)入力されています。 これに対して、B列に空白から1が続いているセルまでをひとくくりとして、 右側のセルに表示させたいです。 画像では C2セル=A2 C3セル=IF(B3=1,C2&A3,A3)としてC4セル以降にコピペ D2セル=IF(B2="",C2,"")としてD3セル以降にコピペしていますが、 C列でひとくくりになるセルが下へ行ってしまい、 希望する結果に表示されないです。 関数が組める方がいましたらご伝授頂けますでしょうか。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

C2セルの式を↓にして、下方向にコピーしてみてください =A2&IF(B3=1,C3,"") 後は今E列でやっているような式で、B列が空白の時だけC列の値を表示します。

rutohamuni2012
質問者

お礼

回答ありがとうございます。ですがこれだと1が連続している場合でも2つ目のセルしかまとめてくれないので、解決できませんでした。

rutohamuni2012
質問者

補足

お礼コメントで「解決できない」と書きましたが、こちらのやり方が悪かっただけでした。解決できました。ありがとうございました、

その他の回答 (3)

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

VBAの回答は、お呼びじゃないと思うが、下記理由があってVBAでの回答を挙げてみる。 その理由は、A列文字列を蓄積を始める(始期)セルと、打ち切る終期セルが、B列の「データのあり様」によって変動するタイプの課題だからです。 ーー 処理ロジックは、最下行から上方向に、B列を判別していって、B列で空白行が見つかるまで、A列の文字列データを累積し、空白セルに達したら、そこの行で自身の行のA列データも含めて結合し、結果をその行C列に出し、累積はご破算にするもの。 標準モジュールに Sub test02() For i = 9 To 2 Step -1 '結果の表示順を希望のようにするため、下行から処理 If Cells(i, "B") = "" Then 'フラグ列が空白なら s = Cells(i, "A") & s '現在行のA列も結合 Cells(i, "C") = s '同行c列に代入 s = "" '蓄積は解消 Else s = Cells(i, "A") & s 'A列文字列を蓄積する End If Next End Sub をコピペして実行 ーー 結果 文字列 フラグ 結果 a ab b 1 c cde d 1 e 1 f fgh g 1 h 1 最下行は9という To具体数でやったが、 lr = Range("A100000").End(xlUp).Row MsgBox lr For i = lr To 2 Step -1 と変えればデータ数によって、相対化できる。

rutohamuni2012
質問者

お礼

VBAは使う予定ないです。でも回答ありがとうございました!

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

B列のフラグは3つ以上連続することはないのでしょうか? また、フラグは数値の1に限るのでしょうか? フラグが3セル連続まで対応する数式を提案します。 E2セルへ次の数式を設定して下へコピーしてみると良いでしょう。 =IF(B2="",IF(B3="",A2,IF(B4="",A2&A3,A2&A3&A4)),"") 4連続以上のときはIF関数を更に多重化すでば目的に合うでしょう。 C列とD列は不要です。

  • chie65535
  • ベストアンサー率43% (8508/19344)
回答No.2

C2に =IF(B2=1,C1&A2,A2) と入力してC3以下にコピペ D2に =IF(B3<>1,C2,D3) と入力してD3以下にコピペ E2に =IF(D1<>D2,D2,"") と入力してE3以下にコピペ C列、D列は「希望する結果をE列に得るための途中結果」なので、必要です。

rutohamuni2012
質問者

お礼

問題は解決できますけど、セルが3列必要なので今回はNo1様にベストアンサーをつけさせて頂きます。でも丁寧な回答ありがとうございました!

関連するQ&A

  • エクセル2010で二つのセルを一つにまとめる関数

    エクセル2010を使っています。 二つのセルに入っているそれぞれの数値を、1つのセルに文字のようにまとめたいです。 例えば、 B2に3、C2に4、なら、D2に34、です。 ただ、 B3に数値が入っていて(例えば5)、C3が空白なら、D3は、B3の数値(5) としたいです。 これらの条件を満たす、D列にいれる関数を教えてください。 どうぞよろしくお願いします。

  • エクセル関数について

    エクセル関数を組みたいのですが、知識がありませんので、 以下、(0)~(9)の条件を統合させた勤続年数の関数を お教え頂けないでしょうか。 ※前提条件として、エクセル(Office2010)を使用しております。  尚、C3、C4セルの書式設定は、ユーザー定義で、  「yyyy(ggge)"年"m"月"」としております。 (ケース0) ※通常版  C3セルに「1993/2/1」、C4セルに「1994/2/28」と入力。  結果表示として、C3セルは「1993(平成5)年2月」、  C4セルは「1994(平成6)年2月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数「1年1ヵ月」と表示する関数 (ケース1) ※通常版  C3セルに「1993/2/1」、C4セルに「1997/4/30」と入力。  結果表示として、C3セルは「1993(平成5)年2月」、  C4セルは「1997(平成9)年4月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数「4年3ヵ月」と表示する関数 (ケース2)  C3セルに「2003/4/1」、C4セルに「2003/4/30」と入力。  結果表示として、C3セルは「2003(平成15)年4月」、  C4セルは「2003(平成15)年4月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数「1ヵ月」と表示する関数  決して、「0年1ヵ月」と表示はしない (ケース3)  C3セルに「2003/4/1」、C4セルに「2003/10/31」と入力。  結果表示として、C3セルは「2003(平成15)年4月」、  C4セルは「2003(平成15)年10月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数「7ヵ月」と表示する関数  決して、「0年7ヵ月」と表示はしない (ケース4)  C3セルに「2003/6/1」、C4セルに「2004/5/31」と入力。  結果表示として、C3セルは「2003(平成15)年6月」、  C4セルは「2004(平成16)年5月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数「1年0ヵ月」と表示する関数  決して、「0年12ヵ月」と表示はしない (ケース5)  C3セルに「2008/2/1」、C4セルに「2010/1/31」と入力。  結果表示として、C3セルは「2008(平成20)年2月」、  C4セルは「2010(平成22)年1月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数「2年0ヵ月」と表示する関数  決して、「1年12ヵ月」と表示はしない (ケース6)  C3セルは「空白」、C4セルに「2008/11/30」と入力。  結果表示として、C3セルは勿論、「空白表示」、  C4セルは「2008(平成20)年11月」と表示、  D3セル(D3セルとD4セルが結合)には、  勤続年数としては、何も表示しない(エラー表示含) (ケース7)  C3セルは「2008/12/1」と入力、C4セルに「空白」。  結果表示として、C3セルは「2008(平成20)年12月」、  C4には結果として、表示は勿論、「空白表示」、  D3セル(D3セルとD4セルが結合)には、  勤続年数としては、何も表示しない(エラー表示含) (ケース8)  C3セル、C4セル共に「空白」。  結果表示として、C3セル、C4には勿論、「空白表示」、  D3セル(D3セルとD4セルが結合)には、  勤続年数としては、何も表示しない(エラー表示含) (ケース9)  C3セル、C4セル共に「日付」以外のものなどが、  入力された場合、D3セル(D3セルとD4セルが結合)には、  勤続年数としては、何も表示しない(エラー表示含)  この場合、入力チェックなどでガードを掛けても  可能なのかと思います(すみません、無知なくせに) お手数お掛け致しますが、 何方かこの手でお詳しい方、よろしくお願い致します。 ※補足 わたくしも含めまして、様々な立場や経験をもつ人々が参加されて いるかと思います。 皆様方、色々な環境化の中で人生を歩んできておりますので、 当然、互いに違う考え方や価値観をもった方が多数いらっしゃる かと思います。 考え方や価値観が違うからといって、腹立たしく思ったりして、 その感じた事をストレートに不愉快にさせるような誹謗中傷的な 表現でのご回答・攻撃するような行為だけは避けてくださるよう ご理解願います。

  • IF関数をひとつのセルに二つ使いたい。

    A列のセルには、 「空白」、「0.5」、「1」、「1,5」、「2」が入るのですが B列のセルには 隣接するA列が「0.5」~「1,5」までは500、 「2」以上だと1000、 A列が空白だとB列も空白にしたいです。 でも最初からB列には関数 「=IF(1<A1,1000,500)」を入れてオートフィルしているので 空白のセルも勝手に「500」に入力されてしまいます。 そもそも「=IF(1<A1,1000,500)」ではだめですよね? よろしくお願いします。

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

  • 関数 数式 Excel

    すみませんが教えてください! E列に下のような関数を入れたところ正しく表示されませんでした・・・ どうぞよろしくお願いします。 A列(数字・空白を含む)が 1 の場合”◎” A列が1以外の場合は B列(別シートから参照のVLOOKUP関数が入っている)と C列(別シートから参照ののVLOOKUP関数が入っている) を足した数字が D列(別シートから参照ののVLOOKUP関数が入っている) が同じなら ”OK” 違うなら ”NG" と表示させたいので =IF(A1=1,"◎",IF(D181=(B181+C181),"OK","NG")) としてみましたが"◎"が表示される表示は正しいのですが "OK" "NG"が正しく表示されません。 これに加えていずれのセルにも空白が存在するのでエラーを出さないようにしたいです。 よろしくおねがいします!!

  • エクセルで、セルの塗りつぶし色を判別する関数はあるのでしょうか。アドバイス下さい。

    ●特定の色のセルに入っているデータの合計値を求めたいのです。マクロではなく、セルの中に関数(if...のような関数)を埋め込んで、使いたいのです。 ●質問が長くなるので、具体的なことは省略しますが、例えば、セルD30に、「if(セルB30の塗りつぶし色=赤, B30, C30)」のような関数を入れることは、可能なのか、というのが質問です。 ●この式の意図は、セルA30のデータを見て、セルB30とC30のどちらにあるデータを集計に採用するか(人間が感覚的に)判断して、採用する方を赤で塗りつぶしておくことで、セルD30には赤色セルのデータが入るだろう、ということです。(数値的な判断ができない事情があります) ●これが可能なら、D列の下のほうに「=sum(d1:d50)」と入れれば、B列とC列のうち、赤色セルだけを集計できると思います。

  • エクセルで複数のセルの合計をIF関数も含めて出す方法

    初歩的だと思うのですが・・ 異なった文字が入った各セルの合計を別セルにてIFを使用し、数字を出しながらなおかつ集計する方法がわかりません。  A   B    C   D 1 い   ろ 2     は   に   3 ほ       4 へ   と 5 A列に文字が入ると常に 500 B列に文字が入ると常に 200 C列に文字が入ると常に 100 として、D列にA-Cの合計(何もなければ空欄)を出したいのです。この場合だとD1=700, D2=300, D3=500...となるように。 IF(A1="","",500)+IF(B1="","",200)+IF(C1="","",100) のちゃんとした関数式を教えてください。よろしくお願いします。。

  • エクセル 文字が表示されたセルを抽出したい

    エクセルの関数を教えて下さい。    A     B     C     D   1 りんご              りんご 2       プリン        プリン 3             紅茶   紅茶 4 バナナ              バナナ 5      6             緑茶   緑茶 上記のような表があります。(A~は列、1~は行番号です) A1~C6までは、IF関数で、条件にあった場合に“りんご”などを表示、そうでない場合には空白と なるような式が入っています。 そして、D列のように、それぞれの行に表示されている文字を抽出、何も表示されていない場合は空白としたいのです。 D列にはどういった式を入れればよいかを教えて下さい。 ※各行に表示されるのは1つのセルのみで、例えばA1のセルとC1のセルに文字が表示される ことはありません。A1に文字が表示されている場合は、必ずB1・C1のセルは空白です。 宜しくお願い致します。

  • 関数によって空白したのを数値「0」に置き換える

    A.............B...............C 1 ZZ............6..............× 2 AA........... 1 3 BB 4 CC............3 B列にはそれぞれ関数が入っています。 セルB1には、B2、B3、B4の数値の合計です。 C1のセルには、C1数値とB2、B3、B4の数値の合計が一致しているか否かの判定する関数が 入っており、一致していなければ、"×"が表示させるようにしています。 しかし、ここで問題が起きました。 「VALUE」というエラーが表示されました。 上記の表では、セルB3は、空白になっております。 本来は、セルが空白になっている場合は、「0」が格納されていると思うのですが、 ここには、関数によって、文字列?の「空白」に置き換えられています。 例えば = IF((Z5) ,5, "") ようにです。 多分、関数によって文字列として認識される空白("")を置いたためと思います。 関数によって置き換えた空白("")を数値「0」として認識できる関数を教えてください。 いろいろな方法があると思いますが、「関数」のみで教えてください。 C1には、以下の関数が入っています。 =IF((B1) = (B2+B3+B4) ,"○","×")

  • 一つのセルでIF関数を二つ使いたい

    二つのセルの値を割って、%を表示させるために、三つ目のセルには 「=1-(B1/A1)」を入れていたのですが、そこに、二つのセルが空白の時にはエラー表示にならないようにIF関数を使い、三つ目のセルは 「=IF(ISBLANK(A1),"",(1-(B1/A1)))」 という数式にしました。 その数式にさらに、もし二つのセルの値が「0」の時には、結果を「0%」として表示させたくて、三つ目の数式の中にもうひとつのIF関数を同時に使いたいのですが、 一つのセル内に、IF関数を使って結果をうまく表示させるには、どのような数式にすれば良いでしょうか??

専門家に質問してみよう