EXCEL 数値と文字列の共存
- EXCELで数値と文字列を共存させる方法について困っています。
- ユーザーフォーム上のテキストボックスからセルに入力する際に、数値と文字列の両方を入力したいですが、エラーが出てしまいます。
- if文を使用して数値の時はstr、文字列の時はvalというように処理する方法はありますが、もっと簡単な方法はないでしょうか?
- ベストアンサー
EXCEL 数値と文字列の共存
凄く初歩的な質問だとは思うのですが解決出来なくて困っています。 ユーザーフォーム上のテキストボックスから セルに入力をする時に 485768 っと数値を入力すると入力はされますが 「数値が文字列として入力されています」 とエラーが出てしまします。 これだけなら「str」ってのを使うと解決するのですが その同じテキストボックスで 3RD-544 のような文字列も入力します。 これだと「str」だとエラーが出てしまいます。 しかし「val」で解決します。 でも、すると数値のみの時にエラーが出てしまします。 ・・・要するに文字列もしくは標準で入力したいのです。 if構文で数値の時は「str」、文字列の時は「val」 のように凄く回りくどくやれば出来そうな気はするのですが もっとさくっと出来る方法はないでしょうか?
- angeldill
- お礼率33% (8/24)
- Visual Basic
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 > ダメでした。 そうですか、、、 該当のメッセージが出るExcel2003では問題無かったので、ちょっと原因が思いつきません。 TextBoxに数値を入れた場合、セルに代入される際にセルの書式設定が標準ならば数値型に変換されると思うのですが、、、 新規ブックで新規UserFormにTextBox1とCommandButton1を置いて試しても同じですか? Private Sub CommandButton1_Click() Range("F2").NumberFormat = "General" Range("F2").Value = TextBox1.Value End Sub 更には Private Sub CommandButton1_Click() Range("F2").NumberFormat = "General" Range("F2").Value = Trim(TextBox1.Value) End Sub のようにTrimを使っても同じですか?
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 > セルの左寄りに表示され「!」でエラーが出ます。 エラーと言うより注意表示なのでしょうね。 何処かに非表示にする設定があると思いますけど、こちらの環境(Excel2000)では出ないので解りません。 Private Sub 入力_Click() Range("F2").NumberFormat = "General" Range("F2").Value = Text1.Value End Sub のようにするとどうでしょうか? --- コマンドボタン等のオブジェクト名や変数には出来るだけ日本語を使わない方が無難です。 予期せぬ不具合が出る可能性がありますので。
お礼
ありがとうございます^^ Private Sub 入力_Click() Range("F2").NumberFormat = "General" Range("F2").Value = Text1.Value End Sub はダメでした。 >エラーと言うより注意表示なのでしょうね。 >何処かに非表示にする設定があると思いますけど、こちらの環境(Excel2000)では出ないので解りません。 これは確かに有効なんですけどこのファイルじたい サーバーで共有して会社内全体で使いたいので全員分設定 変えなくちゃいけないのがネックです(>_<)
- papayuka
- ベストアンサー率45% (1388/3066)
ご質問を良く理解出来ませんでした。 > 「数値が文字列として入力されています」 > とエラーが出てしまします。 これはどんな状況で出るメッセージなのでしょう? Excelのバージョンによるものなのかな? Excelのバージョンとシート構成やUserFormの構成、書かれているコードを掲示された方が良いかも。
補足
すいません!補足します^^; EXCELのバージョンはXPで ユーザーフォームにテキストボックス(text1)とコマンドボタン(入力) の2つがある状態 Private Sub 入力_Click() Range("F2").Select ActiveCell = Text1 End Sub っとコードを書いた場合です。 これだとF2セルに「485768」のようなは入るは入るのですが セルの左寄りに表示され「!」でエラーが出ます。 「このセルにある数値がテキスト形式、またはアポストロフィで始まっています」 っと言う内容です。 そこで ActiveCell = Val(Text1) にすると「485768」は無事数字として入力されるのですが 「3RD-544」は「3」しか入力されません。 なので ActiveCell = str(Text1) にしてみても上記と一緒でやっぱりだめです。 要するに「485768」も「3RD-544」エラーが出る事無く 入力出来る用になりたいのです。 どうにかなりませんでしょうか?
関連するQ&A
- シェルスクリプトでファイル内の数値文字列を数値として扱うには
失礼します。 シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか? str:ファイル内のテキスト(数値文字列) res=$(( $str + 1 )) ・エラー ")syntax error: invalid arithmetic operator (error token is " よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- access2000 クエリで文字列を数値に変換
access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。
- 締切済み
- その他MS Office製品
- Excelの数値の比較がうまくいきません???
ExcelのVbaでアンケートの入力フォームを初めて作成しています。 フォームに,テキストボックスを配置して,それを指定したセルに代入するというものです。 このとき,テキストボックスの中身とセルの中身が一致しているかどうかを判断したいと考えて, If Range("A1").Value = Textbox1.Value then ・・・ などとやりました。 そしたら,文字列の時は,うまくいくのですが,数値を入力したら,明らかに同じ数値が入っているのに,上の条件式が"False"になってしまうのです。 IsNumeric関数で調べると,双方とも数値であるとの結果が出ています。どちらも数値であっても3=3が"False"になってしまうのです。 どういうことなんでしょう? どなたかよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- Excelで数値が文字列になっています
Excel2010で「このセルにある数値がテキスト形式か、またはアポストロフィで始まっています」という警告が表示されたりして、計算が出来ません。 打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで 始まる数値」のチェックを外したりして計算は出来るようになります。 「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 本当ならば、数字の保存形式が文字列データかどうかを確かめる方法はありますか? なお、ISNUMBERという関数ではTRUEと出ます。
- ベストアンサー
- Excel(エクセル)
- Informixで文字列を数値型に
こんにちは。 当方、Linux7.3+アプリケーション(DB:Informix)を使用しています。 文字列を数値に変換するSQLに悩まされています。 内容 01/01/08からなる文字列と20080101と手動入力される数値を比較する事が最終目標です。 当方が試みている方向は、 01/01/08をSUBSTRING()で20080101に成型し、数値比較をしたい、と思っています。 SUBSTRING()で、文字列型で20080101までできるのですが、数値型にCASTが出来ません。 検討した関数は、下記の通りですが、構文エラーとなり、実装できません。 お助け下さい。 CAST(20080101) as INTEGER TO_NUMBER(20080101) INT(20080101) CONVERT(20080101)
- ベストアンサー
- その他(データベース)
- VBA フォームに入力された数値を検索条件としたい
ど素人ですので、よろしくお願いいたします。 VBAでユーザーフォームのテキストボックスに入力された数値○○~○○という条件でエクセルのデータをフィルターをかけて検索する構文を書きたいのですが、フォームのコードと標準モジュールのコードをどう繋げたらよいのかわかりません。よろしくお願いいたします。 以下が途中まで書いた構文です。 モジュールコード Sub 抽出() Range("a4").AutoFilter field:=1, Criteria1:=">=■1", _ operator:=xlAnd, Criteria2:="<■2" End Sub フォームコード Private Sub 実行_Click() ■1(○○以上の数値が入るテキストボックスの構文) ■2(○○未満の数値が入るテキストボックスの構文) End Sub 全く違っているのかも知れませんが、フォームは無視してモジュールの■に数値を直接入れると正しく検索します。
- ベストアンサー
- Visual Basic
- 文字列から数値を抽出したいのですが・・。
文字列から数値(integer型)を抽出したいのですが、うまくいきません。 val関数だと文字の途中の数値が判別できないし、困っています。 よろしくお願いします。 ※以下、文字列と数値の関係です。 ・"文字列" → 抽出したい数値 "0k,abc,5k,abc3.0" → 0530 "abc()_3t" → 3
- ベストアンサー
- Visual Basic
- エクセルで半角数字には数値と文字列がある?
http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?
- ベストアンサー
- その他MS Office製品
- 12(数値)、15(標準)、’16(文字列)のエクセルソート
12(数値)、15(標準)、’16(文字列)の様に、一見すると全て同じ数値データに見えるようなものが、100件程、羅列しています。ソートうまく出来ません。 (1)書式設定で、全てを「数値」に変えても「’」だけは消えず、「’」を「空欄」にするという置換は、エラー(データ一致しません)で出来ませんでした。今は、一個一個のデータを見て、手作業で「’」を消しています。 どうすれば、標準・数値・文字列の混在したデータをソートできるのでしょうか? どなたか分かる方、お教えください。
- ベストアンサー
- オフィス系ソフト
- 数式(数値)と文字列の共存方法
Excelで数式や数値の前や後に文字列を入れることは可能でしょうか? 例えば「10」という数値の前に 「90%」という文字列を入力する事は可能でしょうか? 「90%」という文字列と、その後に数式や計算用の数値を 共存出来るようにする方法を知りたいのですが、 分かる方いらっしゃいましたら御回答宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
おおお!! 「Trim」です! 探していたコードはまさにこれです!! 一気に片付きましたO(≧▽≦)O ありがとうございます。