アプリ版:「スタンプのみでお礼する」機能のリリースについて

スプレットシートの関数について質問です。
D列に入っている¥マークの前の文字を取り出したいです。
ですが、¥マークが半角の\だったり環境依存の¥だったり全角の¥だったりするのでどの円マークでも対応できるようにしたく、関数を組んだのですがうまく反応しません。
↓下記関数
arrayformula(IFERROR(IF(SEARCH("¥",D5:D),IFERROR(LEFT(D5:D,FIND("¥",D5:D)-1),IFERROR(IF(SEARCH("¥",D5:D),IFERROR(LEFT(D5:D,FIND("¥",D5:D)-1),""),""))))))

何か関数に間違えがあるのか、もしくは違うやり方があれば教えていただきたいです。
D列をGASで自動で円マークを統一することも考えたのですが、GASの知識が浅い為調べてもよくわかりません。そちらのやり方でもいいのでもしわかる方がいれば教えていただきたいです。

A 回答 (3件)

円記以降を削除したいというイメージなら、こちら↓


 =ARRAYFORMULA((IFERROR(REGEXREPLACE(TO_TEXT(D5:D),"[¥|¥|\\].+",""),"")))

"[¥|¥|\\].+"にすることで、円記号以降を対象にします。
https://www.officeisyours.com/entry/2020/12/20/1 …
https://www.officeisyours.com/entry/2020/12/20/1 …
「スプレットシートの関数」の回答画像3
    • good
    • 0

次の数式で試してください。


=ArrayFormula(SUBSTITUTE(D5:D,REGEXEXTRACT(D5:D,"[\\¥¥].*"),""))
    • good
    • 0

円記号を削除すればよいのですよね?


以下のように正規表現を使ってみては。
 =ARRAYFORMULA((IFERROR(REGEXREPLACE(TO_TEXT(D5:D),"[¥|¥|\\]",""),"")))

REGEXREPLACE関数を使うために、TO_TEXT(D5:D)で
範囲を文字列に変換していますが、範囲全てが文字列なら
REGEXREPLACE(D5:D,"[¥|¥|\\]","")で置換できます。
https://support.google.com/docs/answer/3098245?h …
https://support.google.com/docs/answer/3094285?h …
"[¥|¥|\\]"は、環境依存文字の円記号と全角及び半角の
順に|で区切ることでそれぞれを検索しています。
(ここでは、違いがないように表示される可能性がある)
数値が文字列になるのが困る場合は、VALUE関数で対応
します。
https://spread-sheets.com/function/text/value-fu …
    • good
    • 0
この回答へのお礼

円記号のあとに数字が入っているので
円記以降を削除したいというイメージです。

お礼日時:2023/04/07 14:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!