外部データベースで、電話番号がばらばらにテキスト型で入力されているのですが、
それをきれいな数値型に修正したいと思っています。
全角だったり半角だったり、()があったり、ハイフンがあったりなのですが、
すべて統一して数字のみにしたいです。
追加クエリで、そのようなばらばらなデータを、数値のみにして自分のDBに追加していきたいのですが、よい方法がありましたら、教えて下さい。

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

A 回答 (2件)

ユーザ定義関数を作るのは同じですが、


Access2000なら、

Sub A()
  Msgbox ChangeTelNumber("(03)123-1234")
End Sub

Public Function ChangeTelNumber(byref sBuf As String) As String

  sBuf = StrConv(sBuf, vbNarrow)
  sBuf = Replace(sBuf, "(", "")
  sBuf = Replace(sBuf, ")", "")
  sBuf = Replace(sBuf, "-", "")

  ChangeTelNumber = sBuf

End Function

なんてどうでしょう。
    • good
    • 0

ユーザー定義関数を作ってみました。

半角文字にして、指定した文字を削除します。
電話番号の先頭はゼロが多いので、下の結果は文字にしてあります。(03)123-4567は031234567 になります。

'半角の数値のみにする関数
Public Function Str2Numeric(Moji As String) As String
  Dim L As Integer 'カウンタ
  Dim LenMoji As Integer '電話番号の文字長

  Moji = StrConv(Moji, vbNarrow) '半角にする
  LenMoji = Len(Moji) '最初の電話番号の文字長
  For L = LenMoji To 1 Step -1
    Select Case Mid(Moji, L, 1)
      Case "(", ")", "-" '削除する文字を登録する
        Moji = Left(Moji, L - 1) & Right(Moji, Len(Moji) - L) '削除
    End Select
  Next
  Str2Numeric = Moji
End Function
    • good
    • 0

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

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

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

QExcelアルファベットを含む数値から文字に変換

Excelで質問です。
アルファベットを含む数値から文字に変換する方法
例えば、下記のような変換方法はありますでしょうか?
101 → りんご
1A2 → みかん
101,1A2 → りんご,みかん

Aベストアンサー

こんにちは!
横からお邪魔します。

↓の画像のようにSheet2に表があり、Sheet1のB列に表示するようにしてみました。
他の方々と同じようにVBAになってしまいます。

Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
尚、Sheet1のデータは1行目からあるとします。

Sub Sample1() 'この行から
Dim i As Long, k As Long, n As Long, c As Range, buf As String, myArray
Dim wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")

wS1.Columns(2).ClearContents
For i = 1 To wS1.Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
buf = ""
If InStr(wS1.Cells(i, 1), ",") > 0 Then
myArray = Split(wS1.Cells(i, 1), ",")
For k = 0 To UBound(myArray)
Set c = wS2.Columns(1).Find(What:=myArray(k), LookIn:=xlValues, LookAt:=xlWhole)
n = c.Row
buf = buf & wS2.Cells(n, 2) & ","
Next k
wS1.Cells(i, 2) = Left(buf, Len(buf) - 1)
Else
Set c = wS2.Columns(1).Find(What:=wS1.Cells(i, 1), LookIn:=xlValues, LookAt:=xlWhole)
n = c.Row
wS1.Cells(i, 2) = wS2.Cells(n, 2)
End If
Next i
End Sub 'この行まで

こんな感じではどうでしょうか?m(_ _)m

こんにちは!
横からお邪魔します。

↓の画像のようにSheet2に表があり、Sheet1のB列に表示するようにしてみました。
他の方々と同じようにVBAになってしまいます。

Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
尚、Sheet1のデータは1行目からあるとします。

Sub Sample1() 'この行から
Dim i As Long, k As Long, n As Long, c As Range, buf As Strin...続きを読む

Q【Access】レポートで数値型データが時刻型?で表示される

作業環境
・WindowsXP
・Access2007

よろしくお願いします。

クエリをレコードソースにしたレポートを作成した時、一つの数値型フィールドが時刻型?(0:00:00)で表示されてしまいます。

【材料コード】という数値型フィールドなのですが、このフィールドのみ正常に表示されません。
他の数値型フィールド(金額、数量etc)は正常に表示されています。
新規にテキストボックスを作っても、(0:00:00)と表示されます。
レポート表示前に、パラメータとして材料コードを指定しますが、クエリの段階では正しく材料コードが取得できています。
問題のフィールドの書式や規定値へ特殊な設定をしていない事は確認済です。

他のテキストボックスとコントロールソースを交換するという方法も考えましたが、
例)【工場コード】テキストボックスのコントロールソースを【材料コード】とし、
【材料コード】テキストボックスのコントロールソースを【工場コード】とする

上記の場合だと、材料コードが正常に表示されて、工場コードが(0:00:00)と表示されてしまいます。


何か原因として考えられる事はないでしょうか。

作業環境
・WindowsXP
・Access2007

よろしくお願いします。

クエリをレコードソースにしたレポートを作成した時、一つの数値型フィールドが時刻型?(0:00:00)で表示されてしまいます。

【材料コード】という数値型フィールドなのですが、このフィールドのみ正常に表示されません。
他の数値型フィールド(金額、数量etc)は正常に表示されています。
新規にテキストボックスを作っても、(0:00:00)と表示されます。
レポート表示前に、パラメータとして材料コードを指定しますが、クエリの段階...続きを読む

Aベストアンサー

入れ替えても そのテキストボックスの表示がおかしいとなると
>問題のフィールドの書式や規定値へ特殊な設定をしていない事は確認済です。
これは、テーブルのことですよね?
実際のレポートのテキストボックスに書式が入っているのではないですかね
そうであれば、入れ替えた時の状態にも一致します。

Qactionscript アルファベットを数値に変換できる?

Flash Actionscriptの開発で困ってます。
テキストフィールド1とテキストフィールド2があります。それぞれのフィールドに入力されたアルファベットを数値に変換(例えばAと入力されたら1、Bなら2、Cなら3)して、A+B=3のように足し算して返すにはどうしたらよいでしょうか??
こういうのを覆面算?っていうんでしょうか。

Aベストアンサー

ご使用の Flash のバージョンや ActionScript のバージョンなどがわかりませんので,
何とも言えませんが...。
(何とも言えないというのは場合によって答えがありすぎて,つまり変わりすぎて回答のしようがないということです。)



普通考えるのは ASCIIコード で対象参照すれば良いのではないでしょうか。
しかし,
規則が不規則な場合は配列やハッシュ(ハッシュもどき:結合配列)を使うかもしれません。



ActionScript1.0 or 2.0 で ASCII コードを使う方法

新規ドキュメントを作成して
フレーム1 に次のスクリプトをコピペして
「制御」→「ムービープレビュー」

-------------------------------------------------
// 変数 my_str の値を "A" とする
my_str = "A";
// 変数 my_str の 1 番目の文字を ASCII コードで出力
trace(my_str.charCodeAt(0));
// ↑ココで 65 が返るので 64 を引いてやる
trace(my_str.charCodeAt(0)-64);

// ↓"B"に関してもやってみる
my_str = "B";
trace(my_str.charCodeAt(0)-64);
// ↑ちゃんと 2 が返る
-------------------------------------------------



ActionScript1.0 or 2.0 で ハッシュもどきを使う方法

新規ドキュメントを作成して
フレーム1 に次のスクリプトをコピペして
「制御」→「ムービープレビュー」

-------------------------------------------------
// 変数 STR という Object を作成
STR = new Object();
// "A"エレメントの値を1,"B"エレメントの値を2,"C"エレメントの値を1 とする
STR = {A:1, B:2, C:30};

// "A"エレメントの値を取り出してみる
trace(STR["A"]);
// "B"エレメントの値を取り出してみる
trace(STR["B"]);
// "C"エレメントの値を取り出してみる
trace(STR["C"]);
// ↑ ちゃんと 「1」 「2」 「30」 が返りますね

// ちなみに値の型は何?
trace(typeof (STR["A"]));
// ↑numuber(数値) です
-------------------------------------------------



※ ASCII や ハッシュ が使えないバージョンでも
  場合によっては if文 を使えば乗り切れます。

ご使用の Flash のバージョンや ActionScript のバージョンなどがわかりませんので,
何とも言えませんが...。
(何とも言えないというのは場合によって答えがありすぎて,つまり変わりすぎて回答のしようがないということです。)



普通考えるのは ASCIIコード で対象参照すれば良いのではないでしょうか。
しかし,
規則が不規則な場合は配列やハッシュ(ハッシュもどき:結合配列)を使うかもしれません。



ActionScript1.0 or 2.0 で ASCII コードを使う方法

新規ドキュメントを作成して
フ...続きを読む

Qアクセスのデータ型。数値型についてお聞きしたいのですが・・・

アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に

(1)バイト型(0~255の範囲。小数点以下の数値は扱えない)
(2)整数型(-32,768~32,767の範囲。小数点以下は扱えない)
(3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない)
(4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。
            小数点以下の数値が扱える)
(5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×
           10^308の範囲。少数点以下の数値が扱える)
(6)十進型(-10^28-1~10^28-1の範囲。小数点以下の数値が扱える)

と6種類決められますが、それぞれの「選び方の違い」と「その理由」を
教えてください。

たとえば、(1)~(3)くらいなら分かります。
扱える数値の桁数が違うということですよね?で、(1)~(3)を選ぶ時と(4)~(6)を
選ぶときで大きな違いというと、「小数点以下の数値が扱えるかどうか」
ですよね?そういう認識であっているか・・・ということと、上記の(1)~(6)を
「選び分ける必要がある場合」というのを教えてください。

なぜ、このような6種類に分かれているのか、人に説明しないとなりません。

よろしくお願い致します。m(_ _)m

アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に

(1)バイト型(0~255の範囲。小数点以下の数値は扱えない)
(2)整数型(-32,768~32,767の範囲。小数点以下は扱えない)
(3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない)
(4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。
            小数点以下の数値が扱える)
(5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×
           10^308の範囲。少...続きを読む

Aベストアンサー

整数型と浮動小数点型の大きな違いは、少数点以下の数字を扱えるかどうかで合っていると思います。
補足すると、浮動小数点型の方が整数型より大きい数字が扱えます。
長整数型なら21億くらいまでしか扱えませんが、浮動小数点型なら、兆、京・・・と非常に大きい数字が扱えるようになります。
有効数字として、どのくらいのケタを保持できるかが、精度になります。
倍精度は単精度の倍の精度です(当たり前ですが)

コンピュータが2進数で数字を表現していることはご存知のことだと思いますが、2進数で少数を表す場合、必ずしも10進数の少数と一対一に対応するわけではありません。2進数を10進数に直すのはnビットめの数字(0,1)*2のn乗の和ですが、少数の場合は-n乗になります。つまり1/2+1/4+1/8っていうような感じになります。0.75だったら、1/2+1/4で表現できますが、0.3とかになると1/4+1/32+・・・という感じできっちり表現しきれないので、0.299・・・という近似値になります。

それで問題があるようでしたら、十進型を使えば?ってことだと思います。

整数型と浮動小数点型の大きな違いは、少数点以下の数字を扱えるかどうかで合っていると思います。
補足すると、浮動小数点型の方が整数型より大きい数字が扱えます。
長整数型なら21億くらいまでしか扱えませんが、浮動小数点型なら、兆、京・・・と非常に大きい数字が扱えるようになります。
有効数字として、どのくらいのケタを保持できるかが、精度になります。
倍精度は単精度の倍の精度です(当たり前ですが)

コンピュータが2進数で数字を表現していることはご存知のことだと思いますが、2進数...続きを読む

QPHPで、日本語からアルファベットに変換

PHP初心者です。
PHPプログラム上で、日本語からアルファベットに変換する書き方を探しています。
漢字仮名まじりの日本語を、アルファベットに変換できますか?

自分では、
$str = mb_convert_encoding($title,"ascii","UTF-8");
という風にやってみましたが、できませんでした。

どなたかお知恵をお貸しください。

Aベストアンサー

>> 日本語からアルファベットに変換する書き方を探しています。

ローマ字に変換する必要は無いのですよね?

英数字でもよいのなら
base64_encode("日本語");

アルファベットだけでなく数字や%などが混じっても良いのなら
urlencode("日本語")

いずれも逆の変換で元の日本語にも戻せます

QACCESS2003。数値型のフィールドに30億以上の数値を入力できない。

 DVDに焼いたファイルのデータベースをアクセスに入力しているのですが、そのサイズをバイト単位で入力しているのですが、3ギガ以上の数字を入力すると、
「このフィールドに入力した数値がただしくありません。たとえば数値型のフィールドに文字列を挿入しました」
とでます。
 もうこれはテキスト形式のフィールドにするしかないのでしょうか?いままでたくさんのファイルを登録してきたので、ここでテキスト形式にすると以前のファイル等で不都合がでないか懸念を持っています。
 理想は数値型でなんらかの設定をして3ギガ、30億以上の数値を入力できないものでしょうか?よろしくお願いいたします

Aベストアンサー

ヘルプで数値型を検索すればわかると思いますが、
バイト型:0~255
十進型:-10^28 ~ 10^28(mdbの場合)
整数型:-32,768~32,768
長整数型:-2,147,483,648 ~ 2,147,483,647
単精度浮動小数型:-3.402823E38 ~ -1.401298E-45 と 1.401298E-45 ~ 3.402823E38
倍精度浮動小数型:1.79769313486231E308 ~
-4.94065645841247E-324 と 4.94065645841247E-324 ~
1.79769313486231E308
になります。
長整数型では30億は入力できません。21億が限界です。
容量を取りたくなければ単精度浮動小数型、容量があってもいいなら十進型にしてください。

Qかなで書かれた文字をアルファベットに変換できませんか?

エクセルででも、なんででもいいのですが、かなで書かれた文字をアルファベットに一度に変換できないでしょうか? たとえば、エクセルの関数phonetic を使えば、漢字を仮名に変換できますよね? それと同じように、仮名をアルファベットに変換する方法はないでしょうか? もし、そんな便利なことができたら、とってもうれしいのですが。。

よろしくお願いいたします。m(__)m

Aベストアンサー

以前、似た質問に回答しました。

No.806286 質問:Excelで五十音順に並べ替えたい
http://oshiete1.goo.ne.jp/kotaeru.php3?q=806286

No.8の手順3)で、

kakasi -Kj -Jj

を実行すると、

(株)アイウエオ
(株)イノウエ
(株)ウラシマ
(株)阿部商店
(株)石井商店
(有)アイウエオ

(kabu)aiueo
(kabu)inoue
(kabu)urashima
(kabu)abeshouten
(kabu)ishiishouten
(ari)aiueo

と変換できました。

参考URL:http://kakasi.namazu.org/, http://oshiete1.goo.ne.jp/kotaeru.php3?q=806286

QACCESS2000数値型⇒テキスト型変換

ACCESS2000でクエリーで例えば25.0の数値を"25.0"そのままの形の文字列に変換したいのですが、Formt関数とか使っても"25"になってしまいます。"25.0"と表示させる方法ないでしょうか?お願いします。

Aベストアンサー

> 「#」は値が該当の桁の値がゼロ、または存在しないときに表示を抑止することを意味し、
> 「0」は該当の桁の値がゼロ、または存在しないときに0を表示することを意味します。

下記に訂正します。

「#」は値が該当の桁が存在しないときに表示を抑止することを意味し、「0」は該当の桁が存在しないときに0を表示することを意味します。

Q全角アルファベットを半角アルファベットに変換

Word 2003 で文書中の全角アルファベットを半角アルファベットに一括変換するにはどうすればよいでしょうか。一括が無理なら、個別でもかまいません。

Aベストアンサー

全角英字を半角に一括にするなら検索を使ってはいかが。
[検索]ダイアログで[ワイルドカード]にチェックを入れておきます。

検索する文字列 : [A-Z]  (AとZは全角英字にして記号は半角)

[見つかったすべての項目を強調表示する]へとチェックを入れます。
これで[すべて検索]ボタンを押します。

全角英字がすべて選択されたら、ANo.1の回答にもある[文字種の変換]
をします。

Qマクロで、数値データをテキストデータにするには?

テーブルのあるフィールドを、テキストデータから数値データにデータ系列を変更したいのですが、それを「マクロで」実行したいんですが、できますでしょうか?
どうぞよろしくお願いいたします。m(__)m

Aベストアンサー

 マクロでなくとも、以下のようなクエリーを応用してはいかがでしょうか。なお、テーブルの更新は経験的に怖いので、別のテーブルで作業をやられるといいでしょう。

●「テーブル文字」のフィールド「文字」のデータを「テーブル数字」のフィールド「数字」に格納する。
 クエリーは以下のようになります(クエリーの画面を出せないので、SQLで記します。クエリーでSQL画面を表示して以下をコピーペーストするといいでしょう)。
 

INSERT INTO テーブル数字 ( 数字 )
SELECT テーブル文字.文字
FROM テーブル文字;

 さて、事前に、フィールド「文字」(文字型)のある「テーブル文字」とフィールド「数字」(数値型)のある「テーブル数字」を作ります。何かの数字を「テーブル文字」のフィールド「文字」に入れてクエリーを実行すると、自動で型変換され、テーブル数字に格納されます。なお、型変換ができないほど、数字とは似つかないデータの場合には、その行はエラーとなりnullかなにかが格納されると思います。

 オーム社のSQL Server 7 MSDE対応という本が、いろいろなSQLの例が出ていて便利です。Access97以降でならば使えると思います。

 マクロでなくとも、以下のようなクエリーを応用してはいかがでしょうか。なお、テーブルの更新は経験的に怖いので、別のテーブルで作業をやられるといいでしょう。

●「テーブル文字」のフィールド「文字」のデータを「テーブル数字」のフィールド「数字」に格納する。
 クエリーは以下のようになります(クエリーの画面を出せないので、SQLで記します。クエリーでSQL画面を表示して以下をコピーペーストするといいでしょう)。
 

INSERT INTO テーブル数字 ( 数字 )
SELECT テーブル文字.文字
FROM ...続きを読む


人気Q&Aランキング