
初歩的な質問で申し訳ございません。
Accessクエリで1レコード内における特定の文字列(アルファベット(半角/全角)とギリシャ文字(半角/全角))の個数を抽出するための抽出条件は、どうしたらよろしいのでしょうか?
(例1)
<抽出結果>
| F1 | F2 | F1の個数 | F2の個数 |
あ12あ い999 2 3
う8αう 7Ωえ 2 2
また、この時「F1の個数」と「F2の個数」が一致しない場合の条件付けを行う場合の
抽出条件も教えていただきたく。
(例2)
<抽出結果※(例1)の抽出結果の場合>
| F1 | F2 | F1の個数 | F2の個数 | 個数判定 |
あ12あ い999 2 3 個数不一致
お手数おかけいたしますが、どうかよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
すみません、不都合が二つほど
標準モジュールは
Function countStr(s As Variant) As Long
Dim i As Long
For i = 1 To Nz(Len(s),0)
If Mid(s, i, 1) Like "[A-z,A-zΑ-ω]" Then
countStr = countStr + 1
End If
Next
End Function
に変更してください。
F1 と F2 のどちらかが Null だった場合のことを考慮。
また、クエリは
判定:iif(countStr([F1]) = countStr([F2]) ,"一致","不一致")
にしてください(前回F1どうしを比較してましたorz)
これで抽出条件に、"不一致"で出来るハズです。
以下は独り言です。
ギリシャ語のホームページからAccessのフィールドにコピペすると
ほとんどの文字が全角文字に変換されてしまいます。
しかし、中には半角文字のままのが少々。
なあぜぇ??
少々の半角文字になってしまう文字については nora1962 さんの回答で
SELECT regexp_count( 項目, "[a-zA-Za-zA-Zα-ωΑ-Ω△□]") FROM テーブル
△□は、その文字を順次一文字づつ追加したイメージです。
にすれば出来ました。
F1の個数:regexp_count([F1],"[a-zA-Za-zA-Zα-ωΑ-Ω△□]")
F2も同様に
判定:iif(regexp_count([F1],"[a-zA-Za-zA-Zα-ωΑ-Ω△□]") = regexp_count([F2],"[a-zA-Za-zA-Zα-ωΑ-Ω△□])","一致","不一致")
私は文字について根本的な事がわかっていないので危ない雰囲気 (^^ゞ
私の回答ではpattern をコード中に埋め込んでしまっているので出来ません。
(VBEではShift-JIS?ですのでコピペした時点で半角ギリシャ文字が『?』になります)
また前回回答でキャラクタコード云々の事をエラソーに言ってますが、これも忘れてください。
さっぱり判らなくなりました。
ありがとうございます。
ほとんどのことができるようになりました。
半角ギリシャ文字の件ですが、いろいろ勉強になりました。
重ねてお礼申し上げます。
No.2
- 回答日時:
自前でFUNCTION作るしかないでしょう
Function regexp_count(source, pattern)
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.pattern = pattern
re.Global = True
Dim matches As Object
Set matches = re.Execute(source)
regexp_count = matches.Count
Set matches = Nothing
Set re = Nothing
End Function
SELECT regexp_count( 項目, "[a-zA-Za-zA-Zα-ωΑ-Ω]") FROM テーブル
で個数が得られると思います。
この回答への補足
回答ありがとうございます。
初歩的な質問で申し訳ありませんが
「SELECT regexp_count( 項目, "[a-zA-Za-zA-Zα-ωΑ-Ω]") FROM テーブル」
はどこで使用するのでしょうか?
クエリのフィールドに使用すると「サブクエリの指定が正しくありません」と表示されてしまいます。
どうぞよろしくお願いいたします。
No.1
- 回答日時:
標準モジュールに下記のようなのを作成し
クエリでは、
F1の個数:countstr(F1) |F2の個数:countstr(F2) | 判定:iif([F1の個数] = [F1の個数] ,"一致","不一致")
とすれば出来そうですが
半角のギリシア文字の出し方が分かりませぬ。。。(以下のコードは半角ギリシア文字未対応です)
Ω ←文字化けしているかも(「Ω」の細くなっているもの)とかですよねぇ?
↑文字化けはしなくても全角文字のΩになってしまうかも。。
Function countStr(s As String) As Long
Dim i As Long
For i = 1 To Len(s)
If Mid(s, i, 1) Like "[A-z,A-zΑ-ω]" Then
countStr = countStr + 1
End If
Next
End Function
ここを
If Mid(s, i, 1) Like "[A-z,A-zΑ-ω○-△]" Then
にして、○の部分には半角ギリシア文字の先頭の大文字のキャラクタコード
△の部分に半角ギリシア文字の最後の小文字のキャラクタコード
を指定してあげれば出来るかも知れません。
この回答への補足
ご回答いただきありがとうございます。
また、ギリシャ文字の件、了解です。でも結構引っかかってるっぽいです。
一つ質問なんですが、
クエリの中の「 判定:iif([F1の個数] = [F1の個数] ,"一致","不一致")」の
抽出条件で「不一致」のものを抽出させたいのですが、
抽出条件を"不一致"とすると、パラメータの設定が出てきてしまいます。
何か良い方法はございませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- フィナンシャルプランナー(FP) 本日の日付が(F1)出たら、本日の勤務が(F2)同時に出るようにしたいのです。 1 2022/09/12 11:53
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) SUMIF関数について 4 2023/06/14 13:13
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
このQ&Aを見た人はこんなQ&Aも見ています
-
Access で 特定の文字の個数をしりたい
Access(アクセス)
-
access2010 特定文字を含むレコード数のカウント、特定文字を含まないレコード数のカウント 同
Access(アクセス)
-
ACCESSでの文字数カウント
Excel(エクセル)
-
-
4
[access]フィールドの中の特定の文字の数を出したい。
Access(アクセス)
-
5
アクセスで複数のレコード情報を1レコードにまとめる方法
Access(アクセス)
-
6
アルファベットの入った文字列の抽出の仕方について。
Excel(エクセル)
-
7
Accessの文字列部分一致を合計する関数
その他(Microsoft Office)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessクエリで特定の行を削除...
-
Accessクエリで年月フィールド...
-
Access:固定長文字列ファイル...
-
Access クエリで連結する文字...
-
Access2007でSQLの複数列副問い...
-
ACCESS クエリ 抽出条件が多い場合
-
アクセスで任意の件数を抽出す...
-
SQLのLIKE検索で清音と濁音/半...
-
ACCESS 複数のフィールドのチ...
-
アクセスのフィルタ nullにつ...
-
Access Left$関数で全角半角が...
-
コントロールの違う複数条件
-
accessで年代別抽出方法
-
Access2003 削除クエリで式1フ...
-
Accessのクエリで1フィールドの...
-
「#エラー」の回避
-
MS-WORDで、あるフィールドに入...
-
accessのフィールドに10桁の数...
-
アクセスで入力したデータの順...
-
access フィールドのサイズ(文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessクエリで特定の行を削除...
-
Access2007でSQLの複数列副問い...
-
Access クエリで連結する文字...
-
Accessのクエリーのゼロデータ...
-
access2019 チェックボックスと...
-
Accessのクエリで1フィールドの...
-
アクセスのフィルタ nullにつ...
-
ACCESS クエリ 抽出条件が多い場合
-
Access Left$関数で全角半角が...
-
Accessのデータの一部を削除す...
-
accessで空白の時の抽出
-
Accessクエリで年月フィールド...
-
Access:固定長文字列ファイル...
-
access(アクセス):パラメータ...
-
アクセスで任意の件数を抽出す...
-
AccessからExcelへの条件付エク...
-
Accessクエリ特定文字列のカウ...
-
AccessのテーブルのIDを検索す...
-
Access クエリ作成でパラメータ...
-
SQLのLIKE検索で清音と濁音/半...
おすすめ情報