• ベストアンサー

区切り位置について教えてください。

お世話になっております。 エクセル上のA列に下記のような文字列があったとします。       A 1 00001-black-free 2 00002-white-black-L 3    ・ 4    ・ 5    ・ 上記は品番・カラー・サイズという並びなのですが、カラーの部分に上記「white-black」のように間にハイフンが入った物が存在するとします。 これを区切り位置でハイフンで区切りをつけると下記のようになります。    A        B      C       D 1  00001    black     free 2  00002    white     black     L 3   ・      ・       ・      ・ 4   ・      ・       ・      ・ 5   ・      ・       ・      ・ これを本当は下記の形式にしたいのです。    A        B       C      D 1  00001    black      free 2  00002    white-black    L 3   ・      ・       ・      4   ・      ・       ・      5   ・      ・       ・      何か方法がございましたらお教え頂けますでしょうか。 何卒よろしくお願い申し上げます。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

簡単に済ますなら、区切り位置ハイフンで区切った後、 F1に =IF(D1="",B1,B1&"-"&C1) G1に =IF(D1="",C1,D1) と、入れて下へコピー。 その後、F:H列をコピーしてB1に形式を選択して貼り付けで値のみ貼り付け。 最後にF:H列を削除

その他の回答 (5)

noname#204879
noname#204879
回答No.6

[回答番号:No.5]に示したセル D1 の式はそのままでも構わないけど、次のように変更しておきます。 D1: =SUBSTITUTE(A1,B1&"-"&C1&"-","")

noname#204879
noname#204879
回答No.5

        A         B      C       D 1 00001-black-free       00001 black        free 2 00002-white-black-L     00002 white-black     L 3 00003-red-yellow-blue-M   00003 red-yellow-blue   M 4 00004-green-orange-purple-S 00004 green-orange-purple S 5 B1: =LEFT(A1,FIND("-",A1)-1) C1: =LEFT(SUBSTITUTE(MID(A1,FIND("-",A1)+1,99),"-","_",LEN(MID(A1,FIND("-",A1)+1,99))-LEN(SUBSTITUTE(MID(A1,FIND("-",A1)+1,99),"-",""))),FIND("_",SUBSTITUTE(MID(A1,FIND("-",A1)+1,99),"-","_",LEN(MID(A1,FIND("-",A1)+1,99))-LEN(SUBSTITUTE(MID(A1,FIND("-",A1)+1,99),"-",""))))-1) D1: =SUBSTITUTE(A1,LEFT(A1,FIND("-",A1)-1)&"-"&C1&"-","")

回答No.4

分割後の結合条件がイマイチ明確ではありませんが、 ・ハイフンは2個か3個のどちらか ・区切り位置で分割したとき、データが4列目もある場合は2列目と3列目を結合する という前提ならば、区切り位置で分割した後、 E1:=A1 F1:=IF(ISBLANK($D1),B1,B1&"-"&C1) G1:=IF(ISBLANK($D1),C1,D1) とし、E1:G1をコピーしてE2以下にペーストしてはどうでしょう。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでに回答は出ていますが・・・ 無理矢理関数の回答を持ってきました。 商品の中の「-」は最大3個という前提での回答です。 ↓の画像のように作業用の列を使います。 F2セルに =SUBSTITUTE(SUBSTITUTE(A2,"-","%",1),"-","#",2) としてオートフィルで下へコピーします。 B列だけは元データを参照し、 B2セルに =LEFT(A2,FIND("-",A2)-1) C2セルには =IF(ISERROR(FIND("#",F2)),MID(F2,FIND("%",F2)+1,FIND("-",F2)-FIND("%",F2)-1),MID(F2,FIND("%",F2)+1,FIND("#",F2)-FIND("%",F2)-1)) D2セルには =IF(ISERROR(FIND("#",F2)),MID(F2,FIND("-",F2)+1,10),MID(F2,FIND("#",F2)+1,10)) という数式を入れ、B2~D2セルを範囲指定し、オートフィルでコピーすると 画像のような感じになります。 尚、エラー処理はしていません。 しかし、他の方の回答の方がスマートみたいですね! 以上、参考になれば幸いですが、 手間がかかりすぎるみたいなので、こんな方法もある! というくらいの感じで目を通してみてくださいね。m(__)m

  • f272
  • ベストアンサー率46% (8477/18147)
回答No.1

00002-white-black-L これを 00002 white black-L ではなくて 00002 white-black L と分けることはどうやったら分かるの? (1)white-blackだけが特別? (2)一番左の-と一番右の-で分ける? (3)その他?

関連するQ&A