Excelのマクロで数値を文字列として認識させる方法

このQ&Aのポイント
  • エクセル上で数値が文字列として認識されてしまう問題を解決するために、マクロを使用する方法をご紹介します。エクスポートしたデータを貼り付けて文字列として認識されているセルを選択し、F2キーを押してセルを編集します。バックスペースキーを2回押して数値を削除し、Enterキーを押すことで数値が正しく認識されます。この手順をマクロに記録し、任意のセルでマクロを実行することで問題を解決することができます。
  • Excelのマクロを使用して、数値を文字列として認識させる方法を説明します。まず、エクスポートしたデータをエクセルに貼り付けます。数値が文字列として認識されているセルを選択し、F2キーを押してセルを編集します。バックスペースキーを2回押して数値を削除し、Enterキーを押すことで数値が正しく認識されます。この手順をマクロに記録し、任意のセルでマクロを実行することで同じ操作を簡単に行うことができます。
  • Excelのマクロを使用して、数値を文字列として認識させる方法をご紹介します。エクスポートしたデータをエクセルに貼り付けた後、数値が文字列として認識されているセルを選択します。F2キーを押してセルを編集し、バックスペースキーを2回押して数値を削除します。最後にEnterキーを押すことで、数値が正しく認識されます。マクロにこの操作を記録し、任意のセルでマクロを実行することで、数値を文字列として認識させることができます。
回答を見る
  • ベストアンサー

Excelのマクロで作りたい

こんにちは。 あるデータベースを使うシステムでエクセルにデータをエクスポートしたら数値を入れている列が文字列として認識してしまいます。 本来文字列が入るところに数値を入れているだけなのですが、エクスポートした時も数値しか入っていないのですが文字列として入っています。 エクセル上では数値しか見えませんノートパッドにペーストすると数値の後ろに「”」があります。しかも改行されていて2行ある状態になっています。 なのでセルの内容を編集(F2)で開いてバックスペース2回押し、Enterで初めて数値として認識されます。 この行為をマクロ化するにはどうすればいいのでしょうか? マイクの記憶で同じ動作をしてもそのセルの場所と中にある数値も一緒に記憶されるのでどこでやっても記憶した数値を貼り付けする事になってしまいます。 これをどの箇所でもマクロを押せばそのセルをF2してバックスペースを2回する様に設定することは可能でしょうか? 判りずらい説明ですがもし判る方が居たらご教授下さい。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#01です >しかも改行されていて2行ある状態になっています。 ここを見落としていました この意味がよく分かりませんし、実際の改行コードが分からないのですが If Right(r.Value, 2) = "'" & Chr(10) & "'" Then のようにすればいけると思います でもエディタで開けるファイルならエディタで文字列置換してエクセルに読み込む方が簡単かもしれませんよ。

PACMAN1973
質問者

お礼

返信が遅くなって申し訳ありませんでした。 おかげさまでマクロ作れました。 ありがとうございました~

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

>エクセルにデータをエクスポートしたら 察するに、データは、多分CSVファイルのことでしょう。 CSVファイルの名も出てこない方が、VBAでというのもどうかなと思いますが。 ーー CSVファイルを吐き出した業務のフィ-ルド定義が、文字列となっているのでしょう。そこへ数字文字列を入れたのでは。約束違反です。 ーー CSVファイルは歴史的に3通りができていて、標準は、文字列は””で囲む。数字は””で囲まず、カンマの区切りは初めと終わりにあるというのが多い。文字列と言う約束のフィールドに数字を入れたので混乱しているのでしょう。 あと2つは””で文字列も囲まないのと、数値も囲むという型。 ーー (1)CSVファイルの時に、問題の項目の””をはずしてしまう (もちろんプログラムが必要)数が多くなければエディターで人手で直せる。 (2)エクセルの表に入ってくるときに書式を適用し、変える方法。 (3)エクセルの列のセルに入ってきて、そこで数値化する方法 とありそう。 (3)が一番手軽でしょう。 ーー (3)で Sub test01() Cells(1, "B") = Val(Replace(Cells(1, "A"), """", "")) 'A Cells(2, "B") = Val(Cells(2, "A")) 'B End Sub のAかBで、数値化がうまくいったなら ーー Aのケースなら Sub test02() d = Range("A65536").End(xlUp).Row For i = 1 To d Cells(i, "B") = Val(Replace(Cells(i, "A"), """", "")) Next i End Sub を実行する。A列になっているが、問題の列で”A”の箇所を変える。 ーー BのケースならBの行に置き換えて、上記を実行する。 ーー 最後にデーター外部データの取り込みーデータの取り込みでやり マクロの記録をとり、どこを変えたらよいか、良く勉強すること。 多分上記の(2)の方法。 課題丸投げですよ。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

文字列の数字を数値化する方法 その1:空白または0と入力されたセルをコピー 数字の範囲を選択して、「編集」「形式を選択して貼り付け」「値」と「加算」でOK その2:1と入力されたセルをコピー 数字の範囲を選択して、「編集」「形式を選択して貼り付け」「値」と「乗算」でOK その3:数字の1列のみを選択して、「データ」「区切り位置」 「次へ」「次へ」で2画面進んで表示形式を標準にして完了 上記なら「ツール」「マクロ」「新しいマクロの記録」でマクロ化できます。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.3

あいているセルに数字の1を入力してコピーして、数字にしたいセルに形式を選択して貼り付けにして、値の乗算で貼り付けてみて下さい。

回答No.2

文字列を数値に一括変換すれば問題のひとつは解決すんですか?

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

データが入力されたセルの末尾が「''」(シングルクォーテーションが2つ)である全てのセルについて、末尾の「''」を削除すればよいですか? 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro1() Dim r As Range   For Each r In Cells.SpecialCells(xlCellTypeConstants, 3)     If Right(r.Value, 2) = "''" Then       r.Value = Left(r.Value, Len(r.Value) - 2)     End If   Next r End Sub

関連するQ&A

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • エクセルの文字型を数値型で認識させる方法

    エクセル2000で、例えば文字列のセルに1と入力し、その後書式設定で数値型にしたときは数値型として認識されません。これを認識させる時、私はF2でセル内選択→Enterで決定→すると数値型で認識、という面倒なことを行っています。 文字列の数字をコピーし、予め数値型にしておいたセルに値だけコピー&ペーストしても、貼り付けたときには数値として認識せず、上記のように一旦選択→決定しないと新しい型で認識されません。 何千件もこれを行うのが非常に面倒なため、どなたかいい型の変換方法を教えて頂ければうれしいです。よろしくお願いします。

  • エクセル マクロ 条件に応じてロック

    エクセル2002を使用しています。 1行目のG1に”ロック”という文字列が入っていたら 2行目のG列の1つ前のF列で”A2:F2”まで、セルをロックしたいのですが、 どのようにマクロを書けばいいでしょうか? (”ロック”の文字列は、1行目には1つしか入りません。) できれば、エクセル2000でもマクロが対応できると嬉しいです。

  • Excel 検索・置換マクロ

    検索する文字列は、AH4のセルにかいている数値とし 置換後の文字列を“無し”にしたいです。 これを実行するマクロを教えてください。 何卒よろしくお願いしますm--m Excel2003

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • Excelマクロにて文字列連結

    現在Excelのマクロにて文字列の連結を行っているのですが、 繋いだ文字列を改行を付けて連結を行いたいです。 セルとセルの中の文字列を改行を付けて連結するにはどうしたらいいのでしょうか? 例 A1セル「あああ」 B1セル「いいい」 C1セル「あああ       いいい」 Worksheets(sheet1).Range("C1").Value = Worksheets(sheet1).Range("A1").Value + Worksheets(sheet1).Range("B1").Value をすると 「あああいいい」と1行で表示されてしまいます。     ↑ ここに改行を入れるにはどうしたらいいのでしょうか? 以上、宜しくお願いします。

  • EXCEL マクロ

    EXCEL マクロ B1セルからF1 B2セルからF2 B3セルからF3 までとに文字"T"のデータであるセルがあります。 (1)各行で Tという文字の入っている、最左端のセルから最右端のセルまですべて 同じ文字Tで埋めるマクロをどのようにかけばいいですか。

  • エクセル マクロ

    エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

  • エクセルのマクロの作成について

    エクセルのマクロの作成について教えてください!! 一つのセルの中に3行の文字があるとして・・・・ そのセルの2行目と3行目を隣のセルにうつしたいです。 例えば・・ E列の1行目のセルに あいうえお かきくけこ さしすせそ と文字が入っていて、 それを F列の1行目のセルに かきくけこ さしすせそ のみ移動させたいです。 1行~300行ほどあって、さらにデータは増え続けます、手作業での移行が困難になってきました。 そもそも一つのセルの中身の文字の一部を違うところに移動させるマクロは組めるのでしょうか。 当方初心者です。お手柔らかにお願いします。

  • エクセルマクロで教えてください。

    エクセルマクロ初心者なもので、どうか教えてください。 勝手な言い分で申し訳ありませんが、経理の人が出社拒否して 経理するはめになってしまい、少しでも作業負担を減らしたくて お願いしたいのですが^^; エクセル一覧表で、F列のあるセルに 消費税 と文字を入力して、 そのセルの下に太い黒線でD列からR列まで引き、さらに消費税の入ったセルの下の段のO列のセルに=SUM()と入れたいのですが。 こんな感じです。    F   ~  O   P   Q   R 1 消費税  ━━━━━━━━━━━━━━━━━━━━━━ 2        =SUM()          === どうかよろしくお願いします。

専門家に質問してみよう