文字になっている数字を計算するために各データに1をかけて数値に変換していましたが、ふと、何故そのようになるのかなと疑問を持ちました。どなたかおわかりの方は教えていただければありがたいです。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

四則演算に限って,文字列で記入された数字を数値に読み替えて計算してくれます。

(数値に読み替えできない文字列に対して同じ事をすると,#VALUEのエラーになります)
ご存じの通り,一般に関数の計算ではそういう変換をしてくれません。

例:
A1に文字列で数字が記入してある

数値に読み替えてくれる例
=A1*1
=A1+0
=--A1 (マイナスマイナスA1)

計算が通らない関数の例
=SUM(A1)
=VLOOKUP(A1,…
=IF(A1=数値,…
=IF(A1>数値,…

計算を通す数式の組立の例:
=IF(A1-数値=0,…
=IF(VALUE(A1)=数値,…

#参考
しばしば見かけるご相談ですが,RIGHT関数やLEFT関数,MID関数などの文字列操作関数で抜き取ってきた数字も文字列なので,上述と同じ扱いになります。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/04/28 18:37

エクセル特有の仕様(仕組み、思いやり、お節介、実用本位)でしょう。


エクセルは表計算ソフトで、計算が本旨です。だから入力したデータを出来るだけ数字にして、セルの値としてセットしようとしている風が、諸所に見てとれる。
エクセルは言語じゃないが、プログラム言語の中には、変数について、こんな融通(型変換)をしないものも多い。
・全角の数字文字を入れても数値に
・空白セル参照は数式を通すと0に
・空白は0の扱いの関数もある
・本件のように、*1を掛けるケース
・TRUE、FALSEなども1,0を割り当て
ーー
使い慣れるか、イヤならVALUE関数やN関数など使えば良い。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/04/28 18:39

文字数字を数値に変換する方法としてエクセルが提供している仕様みたいです。


他の変換方法は添付のURLを参照して下さい。

参考URL:http://support.microsoft.com/kb/181298/ja
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/04/28 18:38

value関数を使うのは?


=value("123")
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/04/28 18:36

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q数値に E でてくるのは。

Microsoft Excel や MATLABを使って数値計算をしているのですが、数値が非常に小さくなる時に、Eの入った形で表示されるのですが、これは大体いくつくらいを意味しているのでしょうか。
下にExcel計算の結果を載せておきます。よろしくお願いします。

.......
........
0.017946166
0.006095256
0.001997971
0.000645368
0.000207253
6.64089E-05
2.12612E-05
6.80477E-06
2.17766E-06
6.96868E-07
2.23E-07
......
...

Aベストアンサー

 E以下の数値は10の指数部を表します。

http://splab.spo.fukuoka-u.ac.jp/exlfaq/

 つまり、

 E-05=10^(-5)=0.00001
 E-06=10^(-6)=0.000001
 ・・・

と云うことです。
 6.64089E-05 の場合は、

 6.64089×0.0001=0.0000664089

となります。

QExcel : 正規表現を利用して2文字の全角数字を半角数字に変換するには?

アクティブセルの文字を、正規表現を利用して文字の変換をしたいと考えています。
2文字の全角数字を半角数字に変換します。
かつ、3文字以上の全角数字は変換しません。

下記のようにコードを書いたのですが、希望通りに動作してくれません。
どこが悪いのでしょうか?
ご指摘いただければ幸いです。
よろしくお願いいたします。

※参照可能なライブラリファイルにて、「Microosft VBScript Regular Expressions 5.5」に
 チェックは入れています。


Sub sample()
  Dim str
  Dim strPattern As String
  Dim strReplacement As String
  
  str = ActiveCell.Value
  str = myRegExp(str, "([^0123456789])([0123456789]{2})([^0123456789])", "$1$2$3")
  ActiveCell.Value = str
End Sub

Private Function myRegExp(str, strPattern, strReplacement)
  Dim objRegExp As RegExp
  Dim test As String
  Set objRegExp = New RegExp

  With objRegExp
    .Pattern = strPattern
    .IgnoreCase = False
    .Global = True
    myRegExp = .Replace(str, "$1" & StrConv("$2", vbNarrow) & "$3")
  End With

  Set objRegExp = Nothing
End Function

アクティブセルの文字を、正規表現を利用して文字の変換をしたいと考えています。
2文字の全角数字を半角数字に変換します。
かつ、3文字以上の全角数字は変換しません。

下記のようにコードを書いたのですが、希望通りに動作してくれません。
どこが悪いのでしょうか?
ご指摘いただければ幸いです。
よろしくお願いいたします。

※参照可能なライブラリファイルにて、「Microosft VBScript Regular Expressions 5.5」に
 チェックは入れています。


Sub sample()
  Dim str
  Dim strPa...続きを読む

Aベストアンサー

こんばんは。

.Global =True にしてあるので、それをそのままにして作ってみました。

一応、CreateObject("VBScript.RegExp") で、オートメーション・オブジェクトを作っていますが、必要に応じて直してください。私は、$2 だけを取り出してみました。関数は、重複を避けるために、myRegExp2としました。

それから、myRegExp関数の strReplacement の引数は、生きていませんね。


Sub sample2()
  Dim str As String
  Dim strPattern As String
  str = ActiveCell.Value
  str = myRegExp2(str, "([^0-9])([0-9]{2})([^0-9])")
  ActiveCell.Value = str
End Sub

Private Function myRegExp2(str, strPattern)
 Dim Matches As Object 'MatchCollection
 Dim Match As Object 'as Match
 Dim buf As String
 Dim buf2 As String
 
 With CreateObject("VBScript.RegExp")
  .Pattern = strPattern
  .IgnoreCase = False
  .Global = True
  If .Test(str) Then
   Set Matches = .Execute(str)
   buf2 = str
   For Each Match In Matches
    buf = StrConv(.Replace(Match.Value, "$2"), vbNarrow)
    buf2 = Replace(buf2, Match.Value, .Replace(Match.Value, "$1" & buf & "$3"))
   Next
   myRegExp2 = buf2
   Set Matches = Nothing
  Else
   myRegExp2 = str
  End If
 End With

End Function
 

こんばんは。

.Global =True にしてあるので、それをそのままにして作ってみました。

一応、CreateObject("VBScript.RegExp") で、オートメーション・オブジェクトを作っていますが、必要に応じて直してください。私は、$2 だけを取り出してみました。関数は、重複を避けるために、myRegExp2としました。

それから、myRegExp関数の strReplacement の引数は、生きていませんね。


Sub sample2()
  Dim str As String
  Dim strPattern As String
  str = ActiveCell.Value
  str = myR...続きを読む

Q大きすぎる数値になるとE+になってしまいます…。

プログラミング上、どうしても馬鹿でかい数値を扱うことがあり、どうしても正規な数値ではなくE+といった形になってしまいます。
何か対処法はないでしょうか?

Aベストアンサー

がると申します。
「馬鹿でかい数値」のサイズにもよるのですが、ある程度以上(signed long値を超えるような数値。具体的には2147483647を超えるような値)の場合には注意を払う必要があります。
こういった数値を扱う場合、PHPですと、GMP関数やBCMath任意精度数学関数といったものを用いる必要があります。

QExcelで日付データ(シリアル値)を数値データに変換する方法について

Excelで日付データ「2005/1/20(シリアル値38372)」を、数値データ「20050120」に変換したいのですが、やり方がわかりません。。
(Microsoft Office Excel 2003利用)

希望の形としては以下のようになります。
「2005/1/20」 ⇒ 「20050120」

初歩的な質問で申し訳ございませんが、
御教授頂けますでしょうか。

Aベストアンサー

A1に日付 2005/1/20 が入力されているとすると、B1に計算式

=TEXT(A1,"yyyymmdd")

で 20050120 が得られます。あとは、コピー&値で貼り付けです。

この場合 20050120 は文字列になります。これを数値化するにはC1に計算式

=B1*1

で数値化されますので、またコピー&値で貼り付けです。

QE列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく

E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつくようにしたい。

エクセル2007です。
条件付き書式で、数値を入れたセル自体に色をつけることはできたのですが他の列を参照することができませんでした。

どうやって設定すればいいでしょうか。

Aベストアンサー

B1セルの条件付書式で、条件を
「数式が」「=ISBLANK(E1)=FALSE」
とすればよいです。

QExcelで文字列の数字を一括で数値に変換する方法

ある人事ソフトからテキスト形式でExcelにデータを吐き出すと、社員コード(8ケタ)の前にシングルクォーテーションマーク(')が付いた状態で吐き出されます。
この状態でも四則計算はできるのですが、VLOOKUPの「検索値」にはできません。
=RIGHT(セル番地,8)という関数でシングルクォーテーションマークを取ってもまだダメです。
また、この時点で「セルの書式設定」を数値に変更しても設定は反映せず、VLOOKUPの「検索値」にも使えません。
最終的に、該当するセルを[F2]で編集モードにして[Enter]を押すことにより、初めて「セルの書式設定」で指定した設定が反映し、VLOOKUPの「検索値」としても使用できるようになります。

この一連の作業(特に[F2]+[Enter])を一括で処理できる方法はないでしょうか?
毎度毎度のことなので、何か方法がないものかと本当に困っています。
どうか、ご指導のほどよろしくお願いいたします。

Aベストアンサー

VLOOKUP の書式は、=VLOOKUP(検索値,範囲,列番号,検索の型) であることはご存知のとおり。
「検索値」が数値の場合は「範囲」のデータも数値でなければならないので、仰っていることは理解できます。しかし、「範囲」のデータが文字列ならば、手間を掛けてそれを数値化せずに、逆に「検索値」の数値を文字列化してやればよろしいかと。

「検索値」にセルアドレス(例えば A1)を指定しているのなら、「検索値」を A1&"" にしてみてください。

Q長い数値を入力すると「1.23457E+17」と表示されてしまうのは?

長い数値で例えば「123456789123456789」を入力すると「1.23457E+17」とセル内には表示され、データとしては「123456789123456000」となり、入力したものとあきらかに異なっています。
これはどういうことなのでしょうか?
また、正しく「123456789123456789」と表示させるにはどうしたらいいのでしょうか?

よろしくお願いします。

Aベストアンサー

#2です。
「ただ、10のXX乗は別の箱に入っているので......
について、ご参考になるかわかりませんが書きます。
あなたは、対数をご存じですか ? その考え方を思い出して下さい。
a)5桁の電卓で99,999以上の数字を入れようとしても入りませんよね。
b)0.0001以下の数字でも同じように0となってしまいますね。
限られた桁数で、出来るだけ広い範囲の数値を表すためには実際の数値(0.0001)を、有効桁数内で表現できるように位取りをして(1)、実際の数値を、その値と10の指数乗(10の-4乗)の積で保存しています。
この指数乗の部分を別の箱と書きました。
計算機では、「浮動小数点表示」などと呼ばれているハズ。

QExcelで数値データの中の特定の数字の数を数えたい

Excelのある列に、1や123など、桁が異なる数値が入っています。その列のデータの中の例えば1がいくつあるかをカウントしたいんです。
文字列ならば*(アスタリスク)を使ってできるのですが…。
数値を文字列として扱ってもうまくできません。

Aベストアンサー

別案 =COUNT(FIND(1,A1:A100))
[Ctrl]+[Shift]+[Enter]配列数式、{}で囲まれる。

Qdocomo/LGのL-03Eで電池残量を数値確認

こんばんは

L-03Eを購入して使い始めましたが困ったことがあります。
電池残量を 90% などのような数値で確認する方法がわかりません。

乾電池をもしたようなおなじみのアイコンで大まかな残量は確認できますが、具体的な数値での確認をしたいのです。Connection Managerにログインしても同様の項目はありませんでした。以前に使っていたバッファローのルーターはログインすると数値で確認できたのですが。

取説もさらってみましたが該当する項目は見つけられませんでした。
ご存じの方がいらっしゃったら教えてください。

Aベストアンサー

どうやら、説明書を見ても記載がありませんから、その表示の設定はないと思われます。

QExcelで、列内の数値と、行内の数値を順番にかけていき、その和を返したい

具体的にいいますと

甲のシートがこうなっていまして

  A B C D
1  3 2 1 5

乙のシートがこうなっていたとします。

   A
1   6
2   7
3   4
4  8

この場合に、甲のシートのA1と乙のA1、甲B2と乙A2、甲C2と乙A3、甲D2と乙A4というふうに順番に掛け合わせていって、その和を表示させたいのです。
この計算は3x6+2x7+1x4+5x8=76という答えになりますが、これを何らかの関数で一発で計算できたらいいのですが。

どなたかご存知の方はいらっしゃいますでしょうか。

Aベストアンサー

以下の関数で如何でしょうか。

=MMULT(A1:D1,Sheet2!A1:A4)


人気Q&Aランキング

おすすめ情報