[[20230309163934]] 『特定の文字列の削除』(スギ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『特定の文字列の削除』(スギ)

 A            B     C     D
1 10*20*58        10    20    58
2 6*19.5±0.1*118     6    19.5±0.1 118
3 10*60*122±0.5     10    60    122±0.5
4 25±0.3*60*400     25±0.3  60    400
5 7±0.1*18±0.3*29±0.5 7±0.1  18±0.3  29±0.5
6 5.2*160*325(870度焼鈍) 5.2    160    325(870度焼鈍)

はじめまして、現在寸法から重量を計算するため、上の表のA列を*で分割する作業をしています。分割する関数はできました。1行目のような場合は良いのですが、それ以降の±〇〇や(○○)は計算ができないので削除したいです。この±○○や(○○)を削除する方法があれば教えていただきたいです。文字は全て半角に統一しています。

< 使用 Excel:Excel2021、使用 OS:Windows10 >


 VBAのVal関数とかそのまま使えそうな感じですねぇ

Office TANAKA - Excel VBA関数[Val]
http://officetanaka.net/excel/vba/function/Val.htm

(白茶) 2023/03/09(木) 17:32:59


 "*"という文字で分割する関数ができているなら、
 同じように "±"という文字や"("と言う文字で分割すればいいとおもいます
(´・ω・`) 2023/03/09(木) 17:47:02

白茶さん返信ありがとうございます。VBAは自分ぜんぜん扱ったことがないので張ってもらったのを参考にして探り探りやっていくことになると思います。

(´・ω・`)さん返信ありがとうございます。B、C、D列の全ての数値に対して"±"や"("で分割するとなると、これらの文字が含まれないものはエラーになり、また含むものを分割したとしても計算に使いたい数字の列がそろわなくなり上手くいきません。なにか上手い方法があればいいのですが…

ちなみに*で分割する関数はこれを参考にしています。
https://ja.extendoffice.com/excel/formulas/excel-split-dimensions-into-three-parts.html
(スギ) 2023/03/09(木) 18:26:17


 一応組み立ててみた。
 =LET(aa,TRIM(MID(SUBSTITUTE(A1,"*",REPT(" ",100)),COLUMN(A:C)*100-99,100)),LEFT(aa,IFERROR(FIND("*",SUBSTITUTE(SUBSTITUTE(aa,"(","*"),"±","*")),LEN(aa)+1)-1))
(ねむねむ) 2023/03/09(木) 19:49:18

 おっと
 =LET(aa,TRIM(MID(SUBSTITUTE(A1:A10,"*",REPT(" ",100)),COLUMN(A:C)*100-99,100)),LEFT(aa,IFERROR(FIND("*",SUBSTITUTE(SUBSTITUTE(aa,"(","*"),"±","*")),LEN(aa)+1)-1))
 とすると10行目までスピルする。
(ねむねむ) 2023/03/09(木) 19:52:27

ねむねむさん返信ありがとうございます。私の家のパソコンではエクセルのバージョンが低くLET関数が使えないため、明日会社のパソコンで確認させてもらいます。
(スギ) 2023/03/09(木) 21:23:31

エクセルのバージョンにさほど左右されないと思います。

B1: =TRIM(MID(SUBSTITUTE($B5,"*",REPT(" ",100)),100*(COLUMN(A1)-1)+1,100))
(メジロ) 2023/03/10(金) 09:06:35


 メジロさん、
 >この±○○や(○○)を削除する方法
 は?
(ねむねむ) 2023/03/10(金) 09:10:03

ねむねむさん、いつもご指摘ありがとうございます。
質問の後半部分を見落としておりました。

今更ですがセルの指定を誤っておりましたので、訂正だけさせてください。

B1: =TRIM(MID(SUBSTITUTE($A1,"*",REPT(" ",100)),100*(COLUMN(A1)-1)+1,100))

失礼しました。
(メジロ) 2023/03/10(金) 09:17:27


 うまくいかないこともありますが、
=TRANSPOSE(TRIM(LEFT(SUBSTITUTE(SUBSTITUTE(FILTERXML("<y><x>"&SUBSTITUTE(A1,"*","</x><x>")&"</x></y>","//x"),"±","("),"(",REPT(" ",100)),100)))
(んなっと) 2023/03/10(金) 09:59:49

メジロさん返信ありがとうございます。参考にさせていただきます。

ねむねむさんの関数でやりたいことができました、ありがとうございます。

んなっとさん返信ありがとうございます。こちらも上手くいきました。ありがとうございます。

本当に助かりました、みなさんありがとうございました。

(スギ) 2023/03/10(金) 10:10:15


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.