- ベストアンサー
エクセル関数でセルの内容を合わせる
- エクセルの関数を使用して、B列の空白から1が続いているセルまでをひとくくりとして、右側のセルに表示する方法を教えてください。
- C列でひとくくりになるセルが下へ行ってしまい、希望する結果に表示されない問題があります。
- 関数が組める方がいましたら、ご教授いただけますでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
C2セルの式を↓にして、下方向にコピーしてみてください =A2&IF(B3=1,C3,"") 後は今E列でやっているような式で、B列が空白の時だけC列の値を表示します。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
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 と変えればデータ数によって、相対化できる。
お礼
VBAは使う予定ないです。でも回答ありがとうございました!
- bunjii
- ベストアンサー率43% (3589/8249)
B列のフラグは3つ以上連続することはないのでしょうか? また、フラグは数値の1に限るのでしょうか? フラグが3セル連続まで対応する数式を提案します。 E2セルへ次の数式を設定して下へコピーしてみると良いでしょう。 =IF(B2="",IF(B3="",A2,IF(B4="",A2&A3,A2&A3&A4)),"") 4連続以上のときはIF関数を更に多重化すでば目的に合うでしょう。 C列とD列は不要です。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
お礼
回答ありがとうございます。ですがこれだと1が連続している場合でも2つ目のセルしかまとめてくれないので、解決できませんでした。
補足
お礼コメントで「解決できない」と書きましたが、こちらのやり方が悪かっただけでした。解決できました。ありがとうございました、