- ベストアンサー
エクセルで計算不能な数字文字列を、計算可能にしたい。
ネット上から数表をエクセルにコピーすると、表面上は普通の数字でも、加除計算不能な場合(25円などの形式も含めて)があり、現在小生は次のような初歩的な方法で計算可能数字に変換しています。もっとスマートな方法があると思うので、ご教示ください。 仮にA1に計算不能数字「152」とあれば、B1に「=LEFT(A1,3)」とやり、更にC1に「=B1*1」とやってC列に計算可能な形式にコピーしています。この初歩的方法だとメンドクサイ上に、B1には数字の桁数をイチイチ指定しなければならないのです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=LEFT(A1,LEN(A1)-1)*1 または =VALUE(LEFT(A1,LEN(A1)-1)) でも元の25円の方を25に変更 セルの書式設定で表示形式をユーザー定義にして #,##0"円" とすればそのまま計算できます。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
以下に「数字+文字」構成での可変桁の数字を取り出す方法ですが如何でしょうか。 =LEFT(A1,LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},))))*1
お礼
有難うございました。大変役に立ちました。 欲を言えば、下記例でも適応可能ならば完璧です。 「3,125円」「52.5」「最高価 1254(14:30)」 *3例では、1254を取り出したい。
- ctrlzr
- ベストアンサー率29% (18/62)
1)標準モジュールに以下の記述をします。 Function value2(ByVal v) value2 = val(StrConv(v, vbNarrow)) End Function 2)ネット上から数表をコピーしたシートをsheet1とします。 sheet2のA1セルに、以下の式を埋め込みます。 =value2(Sheet2!A1) 3)埋め込んだ式を全セルにてコピーします。 sheet2には、可能な限り数値が表示されます。 25円->25 空白->0
お礼
ご丁寧な回答感謝いたします。 ご教示いただいたマクロで、小生の望みは多分完璧に充たされるものと推測いたします。 ただ小生の今日の理解力では、実地で有効性を検証できないのが残念です。 早速今日からこのマクロを身に付けるために猛勉強させてもらいます。ありがとうございました。
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
文字列(数字)を数値に変換する関数を利用して、 =VALUE(LEFT(A1,3)) とやってみてください。
お礼
有難うございました。早速利用させてもらいます。 欲を言えば、変換元セルの数字によって桁数(3とか4とか固定されるので)を個別に変更する必要があるのが難です。
お礼
有難うございました。大変役に立ちました。 下記例が不適応(#VALUE)でしたが、多分小生の理解力不足が原因と思われます。 「52.5」「最高価 1254(14:30)」 *第2例では、中間の1254のみとりだしたいのです。