旅先で恋に落ちたくなる?思わぬ運命の恋に巡り合う映画

大量のデータを処理しなくてはならないのですが、ときどき送られてくるエクセルでデータに使われるEを含んだ記号文字列が数値になり、しかも下記のような表示に化けてしまってます。()内は数値です。

201E2⇒2.01E+04(20100)
803E7⇒8.03E+0.9(8030000000)
903E9⇒9.03E+11(903000000000)

最初から文字列で入れてくれればこんなことにはならないと思うのですが、お客様あってのことなのであまり強くは言えません。やむをえず一つずつ調べてこちらで修正をしています。

これを関数あるいはVBAで一括変換する方法はないでしょうか?

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

A 回答 (13件中1~10件)

>=LEFT(A1,3)&"E"&LEN(""&A1)-3


>式の意味はわかりますが、なんでこれで変換できるのかわかりません。教えていただけますか?
指数表示になっていても、(内部的には?)質問文のカッコの中の数字になっているので、
20100
8030000000
の様になっていると考えられます。
もともとのフォーマットから数値として有効なのは最初の3桁だけなので、
LEFT(A1,3)で文字列と見立てて最初の3文字を取り出せます。
あとは、付けられた0の数を数えれば良いのですが、
201E2→20100の様に、数値の部分以外は0ですから、
全体の文字数から3文字を引けば、付けられた0の数が分かります。
    • good
    • 0
この回答へのお礼

なるほど、ありがとうございました。

お礼日時:2005/04/29 09:10

ANo.#12 の「お礼」に対して。



やはり何処かでTextデータをExcelに変換させていたようですね。 相手先の入力は恐らく、201E2 のようになっているのでしょう。

今後もこのデータを受け取り、こうした変換を続けるようであれば、相手先に事情を説明して、CSV形式で貰える様にされた方が、お互いに合致するデータを保有することで、健全な解決法だと思います。

ちょっと、立ち入りすぎましたか? 失礼。
    • good
    • 0
この回答へのお礼

そうですね、今後のことを考えると、小細工をするより「健全な解決法」を目指したほうが良いのだとは思います。
努力してみます。

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

お礼日時:2005/04/30 18:18

このコンテンツは色々と教えてもらうことがありました。



ANo.#1:
  A1=2.01E+04
  B1=INT(LOG(A1))-2
  C1=TEXT(A1/(10^B1),"0")&"E"&B1
 演算子「&」は文字列データでなくても連結できてしまう。(セルB1は数値データである。)
 (セルA1は数値20100でも、文字列201E2、2.01E4のいづれであっても、B1、C1は正しく計算される。)
  
ANo.#2:
 =LEFT(A1,3)&"E"&LEN(""&A1)-3
 文字列関数 LEFT、LEN の引数に、文字列データでないデータを指定できる。

ANo.#3:
 =LEFT(TEXT(A1,"0"),3)&"E"&LEN(TEXT(A1,"0"))-3
 ANo.#2の例から、TEXT関数で変換する必要は無い。

ANo.#4:
>それって、Textファイルとか、CSVとかではありませんか?
 わたしもそう思う。エクスプロラーでCSVファイルをダブルクリックしたり、Excelのメニューバー[ファイル]-[開く]
 とかツールバー「開く」ボタンでCSVファイルをExcelに読み込ませると元が201E2となっていても
 2.01E+04と表示されてしまう。
 Excelのメニューバー[データ]-[外部データの取り込み]-[テキストファイルのインポート]で該当する列を
 文字列に指定すればこの問題は生じない。

 Sub 指数変換()について
 c.Value = Format(x / (10 ^ (Int(x) - 2)), "0") & "E" & Int(x) - 2
 は           ↑
 c.Value = Format(c.Value / (10 ^ (Int(x) - 2)), "0") & "E" & Int(x) - 2
 の間違いでしょう。

ANo.#5:
 Function 指数形式を文字列変換() を Sub 指数形式を文字列変換()、End Function を End Sub と直すと
 動いた。でも、2.01E+04 が文字列データだと勘違いしている、201E2 にも変換されない。 回答になっていない。

ANo.#6:
 =LEFT(A1,FIND("E",A1)-1)*POWER(10,RIGHT(A1,LEN(A1)-FIND("E",A1)))
 これも2.01E+04 が文字列データだと勘違いしている。文字列2.01E+04が20100となるだけ。 論外。

ANo.#7:無視

ANo.#8:略

ANo.#9:
 buf = Application.Substitute(Format$(c.Value, "000E+0"), "+", "")
 表示形式を"000E+0"と直すことがオーソドックスで良いと思う。 

ANo.#10:略

総括:
 ANo.#4の「お礼」にあるmerlionXX さんのSub 指数変換()とANo.#9のコードを結合したものが一番使い易いと感じます。
    • good
    • 0
この回答へのお礼

くわしく解説していただき、ありがとうございました。
> c.Value = Format(c.Value / (10 ^ (Int(x) - 2)), "0") & "E" & Int(x) - 2
 の間違いでしょう。

はい、ご指摘の通りでした。

それから元データはCSVやtxtじゃありません。
ホストコンピュータ(?)から取り出したデータをエクセルとして送付されてくるものです。

お礼日時:2005/04/29 20:51

恥ずかしい間違いをしてしました。


ご指摘のとおり、rtn は、場所はどこにも確保されていません。それは、bufですから、

 If Not IsError(rtn) Then
は、
 If Not IsError(buf) Then
で、
buf は、Variant型になりますね。
失礼しました。(^^;
    • good
    • 0
この回答へのお礼

わざわざ訂正ありがとうございます。
やっとわかりました。

お礼日時:2005/04/29 20:46

>If Not IsError(rtn) Thenは "rtn" がエラーじゃない場合って意味ですよね?


>"rtn"って何ですか?

最初に、私のコードには、変数の宣言が抜けていますね。(^^;
Dim rtn As Variant  

それで、英語の"return" の省略形で、「戻り値」のつもりです。
If で、「+」が入っているかチェックしているのだから、エラーがあるはずはないのですが、念のために入れました。これは、1つのパターンですからね。

変数に入れられるものは、Substitute の戻り値とエラーの二種類のタイプが入ります。だから、Variant型になります。

なお、みなさん、関数で処理されているのに、元の場所に、上書きしてよいのかなって、後で気がとがめたのですが、悪ければ、Offsetや、他のシートに写してくださいね。
    • good
    • 0
この回答へのお礼

ほんとに何度もありがとうございます。

変数の宣言のことじゃなくて、rtnにはどこで代入されているのか疑問なんです。
Substitute の戻り値ならbufじゃないんですか?
よくわかってないのにすみません。

お礼日時:2005/04/29 11:50

merlionXXさん、こんなのどうですか?


Logを使うよりも、元が文字列だったら、Excelが自動キャストした過程を考えて、戻したほうが、手っ取り早いような気がしますね。もしも、本当に指数表示だったら、責任は持てないけれどね。(^^;

Sub Exponent2Text()
Dim Rng As Range
Dim c As Range
Set Rng = Selection 'マウスで選択
Dim buf As String
For Each c In Rng
With c
 If InStr(.NumberFormatLocal, "E+0") > 0 Then
   buf = Application.Substitute(Format$(c.Value, "000E+0"), "+", "")
   If Not IsError(rtn) Then
   .NumberFormatLocal = "@"
   .Value = buf
   End If
 End If
 End With
Next c
End Sub
    • good
    • 0
この回答へのお礼

ほんとうにいつもありがとうございます。

なあるほど、こうやればいいんですね。
最後に一つだけ教えてください。

If Not IsError(rtn) Thenは "rtn" がエラーじゃない場合って意味ですよね?
"rtn"って何ですか?
何度もすみません。

お礼日時:2005/04/29 09:20

あれっ、 この質問、タイトルと本文の内容が逆になっていますね。



的外れだったら無視してね。
    • good
    • 0
この回答へのお礼

タイトルと本文の内容が逆になっていますか?

本来、201E2と入力したのに、そのセルの中は数値で20100に変わり、これが表示上では2.01E+04となっているものを、もとの201E2に変換というか復元したいということです。

お礼日時:2005/04/29 09:08

=LEFT(A1,FIND("E",A1)-1)*POWER(10,RIGHT(A1,LEN(A1)-FIND("E",A1)))



指数表示(2.01E+04)の場合は、書式を指数にして、少数点以下の数を 2 に設定。
数値表示の場合は、書式を数値に設定。

で如何ですか。

この回答への補足

エラーになってしまいました。

補足日時:2005/04/29 09:08
    • good
    • 0

VBAで作ってみました。


(分りやすく作ったつもりです)
適当にアレンジすれば、使えると思います。


Function 指数形式を文字列変換()
Dim strSs As String
Dim StrMoji As String
Dim inCom As Integer
Dim inPlus As Integer

'まず、数値を指数形式で文字列に格納します。
strSs = Format(ActiveSheet.Cells(1, 1).Value, "0.00E+00")
'コンマの位置を調べます
inCom = InStr(1, strSs, ".", vbTextCompare)
'プラスの位置を調べます
inPlus = InStr(1, strSs, "+", vbTextCompare)
'コンマとプラスを除いて、文字列を取り出す。
StrMoji = Left(strSs, inCom - 1) & _
Mid(strSs, inCom + 1, inPlus - inCom - 1) & _
Mid(strSs, inPlus + 1, Len(strSs) - inPlus)
'セル書式を文字列に。
ActiveSheet.Cells(1, 1).NumberFormatLocal = "@"
'もとの位置に戻す
ActiveSheet.Cells(1, 1).Value = StrMoji

End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
Sub Functionの使い方がよくわかりません。

そのため試すことができませんでした。
すみません。

お礼日時:2005/04/29 09:02

merlionXXさん、こんにちは。


>最初から文字列で入れてくれればこんなことにはならないと思うのですが、この質問は良く見ますね。
ちょっと確認ですが、もしかしたら、それって、Textファイルとか、CSVとかではありませんか?それとも、相手の方が、Excelの標準方式で直して送ってきているとか?
ただ、関数で解決できるようだったら、私はパスしますが、VBAでも考えてみたいと思います。
    • good
    • 0
この回答へのお礼

Wendy02さん、いつもお世話になりありがとうございます。
ええ、作業の途中段階なのでVBAで処理したいです。
No1さんに教えていただいた関数をもとに以下のようなVBAを書きました。ただ、学生時代から数学が苦手で、LOGなんて何がなんだかさっぱりわからず、あってるかどうか自信がありません。見ていただけたら幸いです。

Sub 指数変換()
Dim c As Range
For Each c In Range("D:D")
If c.NumberFormatLocal = "0.00E+00" And IsNumeric(c) Then
x = Application.WorksheetFunction.Log(c.Value, 10)
c.NumberFormatLocal = "@"
c.Value = Format(x / (10 ^ (Int(x) - 2)), "0") & "E" & Int(x) - 2
End If
Next
End Sub

お礼日時:2005/04/28 19:08

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QExcelで指数表現しないようにする方法

こんにちは。
csvファイルに 10E098 という文字列がある場合、
このファイルをダブルクリックしてExcelで表示すると
1.00E+99 のように指数形式で表示されてしまいます。
(セルのプロパティも「指数」になっています)
そのまま 10E098 という文字列で表示するようにしたいのですが
どのようにすればよいのでしょうか?
ちなみに、該当のセルの表示形式を「標準」にしても「文字列」に
しても 1E+99 と表示されてしまって出来ませんでした。
よろしくお願いいたします。

Aベストアンサー

CSVファイルを読み込むときに普通に読み込むと数値を見なして1E+99になりますので、文字列として読み込んだらいかがですか

「データ」→「区切り位置」を選択し「カンマやタブなどの…」を選択する。ウィザード2/3画面で区切り文字「カンマ」にチェックを入れ、3/3画面でその数値のある列を「文字列」にします

この文字列を数値にするなら以下のような式で可能です
=VALUE(LEFT(A1,FIND("E",A1)-1))*10^VALUE(RIGHT(A1,LEN(A1)-FIND("E",A1)))

QExcelで数値→文字列変換で指数表示になったものをいっぺんに直したい

Excelについての質問です。

他のシートからコピー&ペーストした13桁の数字の羅列データ(JANコードまがいのものです)をまた別のシートの同様のデータと文字列としてマッチングをしようとしています。

ただ、コピペ元のデータが数値と文字列が混在していてコピペ後にセルの書式設定で列を一括で文字列に設定すると「2.01E+12」のように指数表示になってしまうものがありました。
一つずつダブルクリックすれば元の数字に戻るのですが、なにしろ数が多く面倒なものでなんとかいっぺんに指数表示から元の数字に変換することができないものでしょうか。

ちなみにOSはWin2000、Excelも2000を使用しています。

今回はコピペしてしまった後の対処方法をお尋ねしていますが、コピペ時にこうすれば良いというような回避方法もありましたら併せてご回答頂ければ幸いです。

Aベストアンサー

範囲を選択、
[データ]-[区切り位置]
で区切りされないように適当な設定をし、形式を「文字列」にすると、

> 一つずつダブルクリックすれば元の数字に戻るのですが、

と同じ効果が得られるようです。

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

QExcelで3E8を3.00E+8にしない方法を教えてください。

Excel2000および2003で数値の「1000」をDEC2HEX関数を使用して16進の「03E8」に変換し、これをカンマ区切りのcsvファイルで保存したいのですが「CSVと互換性のない機能が含まれている可能性があります。」と表示され、そのまま保存すると、セルの内容が「3.00E+8」の指数形式に変わってしまいます。
指数形式ではなく、文字列で03E8と保存する方法はないのでしょうか?
ご存知の方よろしくお願いいたします。

Aベストアンサー

CSVに書き出した場合、文字列3E8はそのまま文字列3E8として保存さ
れています。しかしそれをExcelで開くと、文字列3E8を勝手に数値
3.00E+08と解釈して、変換されてしまいます。これはExcelのいつも
の「でっかいお世話」機能ですので、回避するには当該ファイルが
CSVじゃなくてテキストファイルだよと見せかけて、ウィザードを経
由して読み込むしかありません。

Microsoft製ではないあらゆるソフトでは正しく3E8という文字列と
して扱ってくれますので、CSVに書き出す目的が他のソフトへのデー
タの移動でしたら、CSVをExcelで開くのは危険とだけ憶えて、ほっ
といていいです。

どうしてもExcelに戻す必要がある場合、私なら16進表記の数値であ
ることを示す意味でも「0x03E8」と書きますね。これならExcelには
何のことだか判らないので、勝手なことをされません。
=REPLACE("0x0000",7-LEN(DEC2HEX(A2)),LEN(DEC2HEX(A2)),DEC2HEX(A2))

CSVに書き出した場合、文字列3E8はそのまま文字列3E8として保存さ
れています。しかしそれをExcelで開くと、文字列3E8を勝手に数値
3.00E+08と解釈して、変換されてしまいます。これはExcelのいつも
の「でっかいお世話」機能ですので、回避するには当該ファイルが
CSVじゃなくてテキストファイルだよと見せかけて、ウィザードを経
由して読み込むしかありません。

Microsoft製ではないあらゆるソフトでは正しく3E8という文字列と
して扱ってくれますので、CSVに書き出す目的が他のソフトへのデー
タの...続きを読む

Qエクセルの指数化け!?

いま大変困っています。
会社のホストコンピュータからエクセルにデータをダウンロードをします。
これはエクセルでファイルが出力されるので最初からエクセルに書式を設定はできません。
そのデータのうち、おびただしい契約のコード(5桁)があるのですが、
たとえば

10A15
1G123
20B25
3013F
3A555
AX121 のようなもので、英数半角です。(数字だけもあります。)

通常は何も問題がないのですが、途中にEが入ると、

201E7→2.01E+09
2E137→2.00E+137
1E231→1.00E+231
10E75→1.00E+76
101E8→1.01E+10

のように文字化け(指数化け)してしまいます。
わたしの仕事は、この5桁のコードを、先頭の2桁と後ろの3桁に分けたいのですが、指数からではできません。
エクセルでなくCSVなどのテキスト形式で出力してもらえばいいのでしょうが、かなり時間がかかりそうで、当面は化けたエクセルから判読するほかなさそうです。
何か良い方法はないでしょうか?
関数でも、VBAでもかまいません。
お助けください。

いま大変困っています。
会社のホストコンピュータからエクセルにデータをダウンロードをします。
これはエクセルでファイルが出力されるので最初からエクセルに書式を設定はできません。
そのデータのうち、おびただしい契約のコード(5桁)があるのですが、
たとえば

10A15
1G123
20B25
3013F
3A555
AX121 のようなもので、英数半角です。(数字だけもあります。)

通常は何も問題がないのですが、途中にEが入ると、

201E7→2.01E+09
2E137→2.00E+137
1E231→1.00E+231
10E75→1.00E+76
101E8→1.01E+10

のよ...続きを読む

Aベストアンサー

論理を組み立てます。
(1)データが非数値である。
 そのままでよい。
(2)データが数値である。
 (2-1)全部数字である。(指数がない)
  そのままでよい。(先頭が0にならないから)
 (2-2)指数と誤認("E+"がある)
  (2-2-1)2桁目が"E"
   例:1E001
  (2-2-2)4桁目が"E"
   例:123E1
  (2-2-3)特例
   例:1E003と100E1
   どちらも1.00E+03になる。
   (2-2-3-1)判定可能
    123E1→1.23E+03
    100E0→1.00E+02
    100E9→1.00E+11
    よって、小数部が"00"でなければ4文字目が"E"、
    指数が2~11でなければ必ず2文字目が"E"です。
   (2-2-3-2)判定不可能
    上記以外、つまり小数部が"00"で指数が2~11の
    場合は判断できませんので、問合せが必要です。

Const 契約列 = 1
Dim 行 As Long
Dim 位 As Long
Dim 字 As String
Dim 指 As Long
Dim 小 As String
Dim 値 As Variant
Do
  行 = 行 + 1
  値 = Cells(行, 契約列).Value
  If IsEmpty(値) Then Exit Do
  If VarType(値) = vbDouble Then
    字 = Cells(行, 契約列).Text
    位 = InStr(字, "E+")
    If 位 = 0 Then
      字 = "'" & 字
    Else
      小 = Mid(字, 位 - 2, 2)
      指 = Val(Mid(字, 位 + 2))
      If 小 <> "00" Then
        字 = "'" & Left(字, 1) & 小 _
          & "E" & CStr(指 - 2)
      Else
        If 指 < 2 Or 指 > 11 Then
          字 = "'" & Left(字, 1) _
            & "E" & Format(指, "000")
        Else
          '★分からないのでそのまま
        End If
      End If
    End If
    Cells(行, 契約列).Value = 字
  End If
Loop

論理を組み立てます。
(1)データが非数値である。
 そのままでよい。
(2)データが数値である。
 (2-1)全部数字である。(指数がない)
  そのままでよい。(先頭が0にならないから)
 (2-2)指数と誤認("E+"がある)
  (2-2-1)2桁目が"E"
   例:1E001
  (2-2-2)4桁目が"E"
   例:123E1
  (2-2-3)特例
   例:1E003と100E1
   どちらも1.00E+03になる。
   (2-2-3-1)判定可能
    123E1→1.23E+03
    100E0→1.00E+02
    100E9→1.00E+11
    よって、小数部が"00"で...続きを読む

QエクセルVBA/ Formatで文字列が数値に化ける?

いつもお世話様です。
エクセルVBAでFormatを使うと、文字列中にeが一つ入っていると、「指数」とみなされて勝手に数値に化けてしまうようです。
話を簡単にするため、問題のコートを簡易化したコードが下記のtest1です。
入力されるのは常に3文字以内の英数です。

test1のコードは、ab9と入れればAB9、01とか20とか入れると、予定通り001や020を返してくれます。
ところが、なかには1E1や4E3なども入力する必要があり、これを入れると010や4000に化けてしまいます。
現在は、対処するため、下記test2のように、文字列中に"E"があるかどうかで処理を分岐させていますが、ほかに何か良い方法はないでしょうか?

Sub test1()
Dim x As String, y As String, z As String
x = Application.InputBox("CODEを入力してねん。", Type:=2)
y = StrConv(StrConv(x, vbUpperCase), vbNarrow)
z = Format(y, "000")
MsgBox z & " Typeだよ。"
End Sub

Sub test2()
Dim x As String, y As String, z As String
x = Application.InputBox("CODEを入力してねん。", Type:=2)
y = StrConv(StrConv(x, vbUpperCase), vbNarrow)
If InStr(y, "E") > 0 Then
z = y
Else
z = Format(y, "000")
End If
MsgBox z & " Typeだよ。"
End Sub

いつもお世話様です。
エクセルVBAでFormatを使うと、文字列中にeが一つ入っていると、「指数」とみなされて勝手に数値に化けてしまうようです。
話を簡単にするため、問題のコートを簡易化したコードが下記のtest1です。
入力されるのは常に3文字以内の英数です。

test1のコードは、ab9と入れればAB9、01とか20とか入れると、予定通り001や020を返してくれます。
ところが、なかには1E1や4E3なども入力する必要があり、これを入れると010や4000に化けてしまいます。
現在は、対処するため、下記test2...続きを読む

Aベストアンサー

エキスパートさん、こんにちは。

FORMAT関数をまだ自分のものにしておりませぬね。
と、ちょっときついことを言ってみる。(^^;;;

Format(y,"000") は、数値表示書式指定文字を使ってますから
文字列1E2(10^2)も数字になります。

質問には英数混合3桁の例で、ab9 とありますが
英数混合で3桁未満はどう表示するのでしょうか?

 ab → 0AB  → ■AB  → AB
 b  → 00B  → ■■B  → B
 1a → 01A  → ■1A  → 1A

■はスペース

3桁未満の表示の仕方によっては、#1の回答も
単純には使えないことはお分かりですね。

(おまけ)
いまのままで 1a とか 1p を試したみてください。

何れにしろ分岐が必要になると思われます。
以上です。

 

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExcelで指数の表示変換について

Excel2000を使用しています。指数「1.230E-07」を「0.123E-06」へ表示を変えるにはどうしたらよいか教えて下さい。宜しくお願いします。

Aベストアンサー

以下の書式設定で可能です。
"0".0000E+00

(1) 先頭に文字列のゼロ「”0”」
(2) 小数点(ピリオド)「.」
(3) 仮数部の桁数分のゼロ「0~0」
(4) 指数記号「E」
(5) 指数の符号表示の指示「+」
(6) 指数の桁数「0~0」

該当セルに対して、セルの書式設定で「ユーザー定義」を選択して
表示されている書式の先頭のゼロを二重引用符で囲めば簡単に変更できました。

Q0.00E-00にしない書式

小数点以下の小さい数になると自動的に0.00…E-00の書式になってしまいます
セルの幅を広げても変わりません
どんなに小さい数でも0.00…になる書式はどうすればよいのでしょう?

Aベストアンサー

正の数しか入力しないなら、以下のようなユーザー定義を設定してみてください。

[>=1]0;0.##################

Qチェックボックスから複数のvalueを取り出す

HTMLフォームから、action="file.php"でデータの受け渡し→PHPで送られてきたvalueに応じて文章を出力、というプログラムを作っています。

例:
グループAのラジオボタン1にチェック、送信
→グループAで押されたラジオボタンを送信されたvalueで判別、この場合はvalue==A
→value==Aの場合に表示する文章を変数に受け渡し、その変数で表示

ラジオボタン、テキストボックスのvalueは$_POST['XXX']で取り出せたのですが、チェックボックスのデータだけが取り出せません。こちらの質問を検索したとき、多次元配列という言葉を見かけたのですが、いまいちよく分かりませんでした。
チェックボックスの複数のvalueで、上記の例のような動きを実現させるにはどうしたらいいでしょうか。どなたかご教授ください。

Aベストアンサー

チェックボックスはちょっと特殊

まずHTML部分で、以下のように定義します
<input type="checkbox" name="sample[]" value="test1">test1
<input type="checkbox" name="sample[]" value="test2">test2

ここでは、nameの部分に[]をつけるのがポイント


次にphpで受け取る方法として、
$sample = $_POST["sample"];
で問題ありません。

受け取ったデータを使うときは、$sampleは配列になっていますので、
仮に上記のtest1とtest2両方にチェックが付いているとしたら、
$sample[0]にはtest1が、$sample[1]にはtest2が入っています。

$sampleをforeachで使うか、$sampleのデータ数を調べてforでループさせるなどで使えます。


人気Q&Aランキング