一回も披露したことのない豆知識

アクセスで教えてください。
電話番号 000-0000-0000あった場合、
クエリで
000 0000 0000
と列を分けたいのですが、どのようにしたらよいでしょうか?

初心者です。
わかりやすく教えていただけると幸いです。

A 回答 (4件)

ユーザー定義関数を使う例です。


[電話番号]が未入力の場合にも対応しています。
数字とハイフン以外が含まれる場合の動作は不定です。

Function TelPart(ByVal Tel As Variant, num As Integer) As Variant
Dim ret As Variant
Dim tmp As String
tmp = Nz(Tel, "") & "--"
ret = Split(tmp, "-")(num)
If IsNumeric(ret) Then
TelPart = ret
Else
TelPart = Null
End If
End Function

【クエリ】
電話番号1: TelPart([電話番号],0)
電話番号2: TelPart([電話番号],1)
電話番号3: TelPart([電話番号],2)
    • good
    • 1

ShowMeHowさん


標準モジュールに作った関数もクエリで使用出来るんですね
勉強になりました

richihaさん
ちょっと難しいかもですが、下記の手順でも可能っぽいです
①データベースツールのメニューからVisual Basicをクリック
②プロジェクトエクスプローラーからデータベースを右クリック
 標準モジュールを挿入
③エディタに下記のコーディングをコピペ
==============コーディング内容==================
Public Function SplitTelLeft(strString As String, strDelimiter As String)
Dim strSplit() As String
strSplit = Split(strString, strDelimiter)
SplitTelLeft = strSplit(0)
End Function

Public Function SplitTelMid(strString As String, strDelimiter As String)
Dim strSplit() As String
strSplit = Split(strString, strDelimiter)
SplitTelMid = strSplit(1)
End Function

Public Function SplitTelRight(strString As String, strDelimiter As String)
Dim strSplit() As String
strSplit = Split(strString, strDelimiter)
SplitTelRight = strSplit(2)
End Function
==============コーディング内容==================

④クエリの列を定義
式4: SplitTelLeft([電話番号],"-")
式5: SplitTelMid([電話番号],"-")
式6: SplitTelRight([電話番号],"-")
    • good
    • 0

頑張りました


単純にハイフン(-)~ハイフンまでの文字の位置を調べて区切っています

式1: mid([電話番号],1,InStr([電話番号],"-"))
式2: mid([電話番号],InStr([電話番号],"-")+1,InStrRev([電話番号],"-")-InStr([電話番号],"-")-1)
式3: mid([電話番号],InStrRev([電話番号],"-"))

これとは別でサクラエディタで正規表現の置換が有ります
ExcelやAccessの列は基本、タブで区切られているので"-"をタブに置換してしまおうという考えです
サクラエディタで置換するときに、"-"を"¥t"(半角で指定)に置換して結果をデータとして貼り付ければ結果は同じです
    • good
    • 0

上記のケースだけであれば、


left([電話番号],3)
mid([電話番号],5,4)
right([電話番号],4)
で対応できます。

00-0000-0000
のようなケースも混在するのであれば、
(split関数を使って)独自の関数を作って、クエリで呼び出すのが楽だと思います。
    • good
    • 1

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