• ベストアンサー

結合セルと単独セルの文字列マージ

以下のような処理をしたいのですが、どのように実現すればよいかアドバイスをお願いします。 ----------------------- 以下のようなデータがあります。 ※等幅フォント以外は見にくいと思います。。。すいません。 ┌――――――┬―――――――┬――┐ |      |ニンテンドーDS| ○ | |      ├―――――――┬――┤ |      |PSP      | | | ゲーム機 ├―――――――┬――┤ |      |Wii      | ○ | |      ├―――――――┬――┤ |      |プレステ3   | | ├――――――┴―――――――┴――┤ |      |ビエラ    | | |      ├―――――――┬――┤ |      |ブラビア    | | |  テレビ  ├―――――――┬――┤ |      |Wooo      | ○ | |      ├―――――――┬――┤ |      |アクオス    | | └――――――┴―――――――┴――┘ 左端は結合セル、その他は単独セルです。 上記のとき、以下のように文字列をひとつのセルにまとめたいです。 ★以下の結果がひとつのセルに書き込まれる。 ゲーム機(ニンテンドーDS、Wii)、テレビ(Wooo) ----------------------- 結合セルのマクロでの処理が、調べたのですがいまいち理解できずでした。ヒントをいただければと思います。

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

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

結合セルをマクロで調べて処理しなくても、良いと思いますが。 以下の例を参考にしてください。 Sub test()   Dim wStr    As String   Dim wStr2    As String   Dim wSeq    As Integer   Dim mR     As Long   '   wStr = ""   With ActiveSheet     mR = .Cells(Rows.Count, "B").End(xlUp).Row     wStr2 = ""     For wR = 1 To mR       If .Cells(wR, 1) <> "" Then         If wStr2 <> "" And wSeq > 0 Then           If wStr = "" Then             wStr = wStr & wStr2 & ")"           Else             wStr = wStr & "、" & wStr2 & ")"           End If         End If         wStr2 = .Cells(wR, 1) & "("         wSeq = 0       End If       If .Cells(wR, 3) = "○" Then         wSeq = wSeq + 1         If wSeq = 1 Then           wStr2 = wStr2 & .Cells(wR, 2)         Else           wStr2 = wStr2 & "、" & .Cells(wR, 2)         End If       End If     Next   End With   If wSeq > 0 Then     If wStr = "" Then       wStr = wStr & wStr2 & ")"     Else       wStr = wStr & "、" & wStr2 & ")"     End If   End If   MsgBox wStr End Sub

CATV95II
質問者

お礼

回答ありがとうございます! とりあえず動かしてみたところ、望みの結果(文字列)が出力されました。 回答内容をベースに適宜変更して利用させていただきたいと思います。

その他の回答 (1)

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

何をしたいのか、質問文から良くつたわらない。 課題達成後の表の様子が良くわからない。 「ゲーム機」の枠は現在は4セル結合してあるのでしょう。 これを「ゲーム機」を結合してない1セルにいれ、 ニンテンドーDS、Wii・・を隣のセル(同一セル?)に ニンテンドーDS、|PSP 、Wii、プレステ3を改行していれるのか、 改行もしないで入れるのか。 全体は罫線つきの表か? ーー 一般化してやるにはVBAが必要な気がする。 ーー 関数などセルを結合した範囲に適用すると、式の複写がうまく行かない。 そうすると関数を使うメリットがなくなる。

CATV95II
質問者

お礼

分かりにくい質問になっていてすみません。 望む結果は 「ゲーム機(ニンテンドーDS、Wii)、テレビ(Wooo)」 という文字列(改行なし)を出力させる、というものでした。 文字列がほしい、という点をきちんと書いていなかったため分かりづらかったです。すみません。 回答ありがとうございました。

関連するQ&A

専門家に質問してみよう