365・LibreOfficeなどに関するメモ2022-04-29(Gスプレッドシート)全角英字と全角数字だけを半角にするGoogleスプレッドシートGoogleスプレッドシートで、文字列中の全角英数字だけを半角にして全角カナや記号はそのままにする方法です。関数を使いますが、かなり長くなります。REGEXEXTRACT関数を使って1文字ずつ全角英数字かどうかを判定し、それらにだけASC関数を適用すれば全角英数字だけを半角に変換できます。画像ではB列にいくつかの文字列が入力されています。そこでC3セルに式を入力して、B3セルの文字列のうち全角英数字だけを半角にしています。他の行についても同様です。C3セル=CONCATENATE(ARRAYFORMULA(IFNA(REGEXEXTRACT(MID(B3,SEQUENCE(LEN(B3)),1),"[^A-Za-z0-9]"),ASC(MID(B3,SEQUENCE(LEN(B3)),1)))))「=REGEXREPLACE(~,ASC("$1"))」などとできればいいのですが、キャプチャ文字列に対して関数が効かないためうまくいきません。そこでまずはSEQUENCE/MID関数を使い文字列を1文字ずつ分割します。REGEXEXTRACT関数とIFNA関数を使って全角英数字以外にマッチするものをそのままとし、マッチしないもの(全角英数字)にASC関数を適用して最後にCONCATENATE関数で連結しています。普通に考えればREGEXMATCHとIFを使うところですが、TRUE/FALSEの両方について戻り値を設定する必要があります。一方でREGEXEXTRACTを使えばマッチしない場合にN/Aエラーになるため、IFNAと組み合わせることでマッチしない場合の戻り値だけ記述すればよく、若干式を短縮できます。それでも相当長い式になっています。画像からわかるように数値や日付は文字列に変換されます。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。