• 締切済み

EXCELの文字列操作について

EXCEL2003において 下記のように列の不特定の場所に()で覆われた文字列があります。 行列ともに随時変更されます。 ( )内が1文字の時は、たとえばA4の(赤)をひとつ上のA3の名古屋に文字を結合し、名古屋(赤)としたいです。B列ならB3の(青)を茨城に結合し、茨城(青)といった感じにです。 また、C4のように( )内が2文字以上の時は、削除したいです。      A列     B列     C列 1    東京      千葉    北海道 2    大阪     茨城    長野 3    名古屋    (青)    鹿児島 4     (赤)     三重    (不適当) よろしくお願いします。

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

同じセルで行うならマクロしかないでしょうね。 別の列に数式で表示でいいなら D1=IF(ISNUMBER(SEARCH("(?)",ASC(A2))),A1&A2,A1) 又は D1=IF(ASC(REPLACE(A2,2,1,""))="()",A1&A2,A1) ところで(赤)等の文字は残したままでいいのでしょうか? 削除する場合、文字を上に詰める等の動作も含みますか? 締め切ってないようなので満足のいく回答が出ていないと思うのですが 何かあるようであれば補足したほうがいいですよ。

ankoromo
質問者

お礼

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

回答No.4

上と同じ場合について説明します。 空いているセル(たとえばD列の1)に =IF(AND(MID(A2,1,1)="(", MID(A2,3,1)=")"),A1&A2,A1) をいれます。 次にD1のデータをオートフィルを使って必要な分だけコピーします。 すると下のように表示されると思います。   A列    B列     C列    D列    E列    F列 1 東京    千葉    北海道   東京    千葉    北海道 2 大阪    茨城    長野    大阪    茨城(青)  長野 3 名古屋   (青)    鹿児島   名古屋(赤) (青)    鹿児島 4 (赤)    三重    (不適当)  (赤)    三重   (不適当) また、 =IF(AND(MID(A2,1,1)="(", MID(A2,3,1)=")"),A1&A2,A1) は 『A2の1文字目が「(」』かつ『3文字目が「)」の場合A1の後ろにA2をくっつけて表示  それ以外の場合はA1はA1(そのまま)表示』 と言う意味なので()内が2文字以上の場合は3文字目が「)」にはならなず ()内が2文字以上の時は削除できると思います。 補足ですが「()」は全角と半角で区別されるので注意して下さい。

ankoromo
質問者

お礼

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

  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

長いですが、ワークシート関数だけでやるなら =IF(AND(LEN(B3)=3,LEFT(B3,1)="(",RIGHT(B3,1)=")")=TRUE,"",IF(AND(LEN(B4)=3,LEFT(B4,1)="(",RIGHT(B4,1)=")")=TRUE,B3&B4,IF(AND(LEN(B3)>3,LEFT(B3,1)="(",RIGHT(B3,1)=")")=TRUE,"",B3))) となりますかね。

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.2

こんにちわ 別の場所に編集用の表を作るものとします。 2行目以降に =IF(ASC(RIGHT(A2,1))=")",A1 & A2,A2) で試してください

ankoromo
質問者

お礼

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

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

マクロを作ってみました。 Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 Sub 括弧つき文字の結合()  Dim R As Range  For Each R In Range("A1").CurrentRegion   If StrConv(R, vbNarrow) Like "(*)" Then    If Len(R) = 3 And R.Row > 1 Then     R.Offset(-1).Value = R.Offset(-1).Value & R.Value    End If    R.Value = ""   End If  Next End Sub その画面でF5キーを押すか、Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。

ankoromo
質問者

お礼

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

関連するQ&A