• ベストアンサー

エクセルのセル内の文字列について

https://okwave.jp/qa/q10068714.html こちらで質問をさせて頂いた者です。 ご教授して頂いております。 添付ファイルの、J列の抽出部には、★があるものは★を消し半角カッコ以降は消す、★のあるもので半角カッコがないものは★を消す、★のないもので半角カッコ以降は消す、★もカッコもないものはそのままという関数が知りたいです。 J列には上から、 みかん もも キウイ グレープフルーツ みかん レモン イチゴ みかん みかん みかん となりたいです。 もう一つは、A1:C5に、J列で抽出したものを重複なく左から表示させたいです。 ご教授、よろしくお願いします。

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.5

添付図参照(Excel 2019) O2: =IFERROR(VLOOKUP(N2,リスト_単価,2,0),"") Q2: =O2*P2 Q12: =SUM(Q2:Q11) J2: ↓ =IFERROR(IF(FIND("(",SUBSTITUTE(N2,"★","")),LEFT(SUBSTITUTE(N2,"★",""),FIND("(",SUBSTITUTE(N2,"★",""))-1)),SUBSTITUTE(N2,"★","")) K2: =P2 K12: =SUM(数量) L2: =Q2 L12: =SUM(計) F2: =IFERROR(INDEX(抽出部,MATCH(0,INDEX(COUNTIF(F$1:F1,抽出部),),0)),"") G2: =SUMIF(抽出部,$F2,数量) G12: =SUM(G2:G11) H2: =SUMIF(抽出部,$F2,計) A2: ↓ =IF((RO A2: ↓ =IF((ROW(A1)-1)*3+COLUMN(A1)>10,"",(OFFSET($F$2,(ROW(A1)-1)*3+MOD(COLUMN(A1)-1,3),)))

その他の回答 (5)

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

>添付ファイルの、J列の抽出部には、★があるのものは★を消し半角カッコ以降は消す、★のあるもので半角カッコがないものは★を消す、★のないもので半角カッコ以降は消す、★もカッコもないものはそのままという関数が知りいです。 提示の画像でJ列の数式を組み替えれば良いでしょう。 LEFT関数の内側にSUBSTITUTE関数を組み込んでいるため目的通りの結果にならないのです。 逆の組み合わせにすれば目的の結果になります。 =IFERROR(LEFT(SUBSTITUTE(N2,"★",""),FIND("(",N2)-2),N2)             ↓ =SUBSTITUTE(LEFT(N2,FIND("(",N2&"(")-1),"★","") 尚、FIND関数で検索文字列の"("が見つからないときのIFERROR関数は対象文字列(N列)の末尾に&演算子で検索文字列を付加すれば不要になります。 >もう一つは、A1:C5に、J列で抽出したものを重複なく左から表示させたいです。 次回に回答します。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

泥臭く、かつ、もはや追跡が相当困難な計算式になりますが、 J2を =IF(IFERROR(FIND("(",SUBSTITUTE(N2,"★",""),1),0)>0,LEFT(SUBSTITUTE(N2,"★",""),IFERROR(FIND("(",SUBSTITUTE(N2,"★",""),1),0)-1),SUBSTITUTE(N2,"★","")) とし、必要数下方向に複写すれば、 期待の結果になるものと思います。 なお、作業列を2列使ってよければ 追跡しやすい計算式にできますので コメントしていただければ 計算式を紹介します。 >もう一つは、A1:C5に、J列で抽出したものを重複なく左から表示させたいです。 この課題は、VBAを持ち込むか 前回スレッド#2の解になりましょう。 VBAを持ち込んでいいのであればコメントをください。 J列の課題も含め コードを紹介できると思います。

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

#1です。ピント外れかもしれないが(参考に) A1,A2セルに aaa(bbb)ccc★ a★aa(bbb)ccc とデータがあって、B1セルの式を SUBSTITUTE(SUBSTITUTE(A1,"★",""),MID(A1,FIND("(",A1),FIND(")",A1)-FIND("(",A1)+1),"") とすると、セルデータ中の、★を削除し、かつ、(で始まり)で終わる文字列も削除できる。 結果 B1,B2 aaaccc aaaccc テストは、★印の位置、文字列の中での()の位置、()の中の文字列、を変えてテストすることになります。

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

#1です。#1の直後に https://prau-pc.jp/excel/delete-parenthesis/ Excel(エクセル)で括弧や括弧の中の文字を削除する方法 という記事が見つかった。操作(=検索)による解決法だが、これで辛抱すべきではないか。 検索、抽出、置換などは関数では難しくなりがち。

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

>J列の抽出部には 質問の「列部には」、「、★があるものは」とあるが、画像のJ列には「★印」はないのでは? こういうのは、関数化公然でなく、基のデータも掲示しないと、判り難い。 また関数にしろ加工後は、その関数のことは、忘れて、値だけを問題にすればよい場合がほとんど。 質問に関数を示す必要はないことが多い。 ーー それで質問がわかりにくい。前の質問も意味が分からず、読むのと回答を断念した。 今回も同じように感じた。 ーー ★があるものは★を消し半角カッコ以降は消す、★のあるもので半角カッコがないものは★を消す、★のないもので半角カッコ以降は消す、★もカッコもないものはそのままという関数が知りたいです これが主題かな?これがわかりにくい表現だ。 またどの列のデータのことかな? ーー 1つのセル(どの列)の文字列で、 (1)★印は全て消す (2)★印があり、半角(*)があれば、()内の*の部分も含めて、消す。*は任意の文字列。 (3)★印がなくても、(*)内の*の部分も含めて、消す。 と表現すべきなのかな? (A)★を消す、 (B)(*)内の*の部分も含めて、消す。 ではどうなのか(質問の場合について、それでは過不足が出るのかな)? この他に、やりたいことがあるのかな? ーー VBAなどを使って、( )の中の文字列を含め、消す例は、偶に見かける。 正規表現を使ったりして、むつかしい解決例が多いように思う。 関数では式が長くなるのではと思う(難しい)。 ーー もっと論点を整理して、質問してほしい。

関連するQ&A