No.1
- 回答日時:
クエリでコマンド一発、はありません。
多分・・。あったら、とっくに回答があると思いますが。
(1)
対象となるデータを入れているテーブルを
「Tデータ」とします。フィールドは質問の
ように列Aとします。
(2)
コードで「Tデータ分割」というテーブルを作成します。
(3)
以下のコードを標準モジュールに貼り付けて保存してください。
コード中には、「Tデータ」と「列A」が出てきます。この二つは
実際に合わせて変更しても差し支えありません。
Dim myCount As Long
Sub funcCount()
Dim db As Database
Dim rs As Recordset
Dim i As Long
Dim j As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("Tデータ", dbOpenDynaset)
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
j = 0
For i = 1 To Len(rs!列A)
If Mid(rs!列A, i, 1) = "-" Then
j = j + 1
End If
Next i
If j > myCount Then
myCount = j
End If
rs.MoveNext
Loop
End If
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
Sub cmdMkTable()
Dim db As Database
Dim tdf As TableDef
Dim fld As Field
Dim prp As Property
Dim i As Long
Set db = CurrentDb
Set tdf = db.CreateTableDef("Tデータ分割")
For i = 1 To myCount + 1
Set fld = tdf.CreateField("列" & i, dbText, 50)
tdf.Fields.Append fld
tdf.Fields.Refresh
Next i
db.TableDefs.Append tdf
db.TableDefs.Refresh
db.Close: Set db = Nothing
End Sub
Sub cmdData()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim str As Variant
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Tデータ", dbOpenDynaset)
Set rs2 = db.OpenRecordset("Tデータ分割", dbOpenDynaset)
If rs1.RecordCount > 0 Then
rs1.MoveFirst
Do Until rs1.EOF
j = 0
For i = 1 To Len(rs1!列A)
If Mid(rs1!列A, i, 1) = "-" Then
j = j + 1
End If
Next i
str = Split(rs1!列A, "-")
rs2.AddNew
For k = 0 To myCount
rs2.Fields(k) = Null
Next k
rs2.Update
rs2.MoveLast
If j = 0 Then
rs2.Fields(0) = str(0)
End If
If j > 0 Then
rs2.Edit
rs2.Fields(0) = str(0)
rs2.Update
For l = 1 To j
rs2.Edit
rs2.Fields(l).Value = str(l)
rs2.Update
Next l
End If
rs1.MoveNext
str = ""
Loop
End If
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End Sub
(4)
フォームにボタンを一つ設定し、ボタンのクリック時
のイベントに以下を設定してください。
Private Sub コマンド0_Click()
Call funcCount
Call cmdMkTable
Call cmdData
End Sub
以上です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- 計算機科学 Excel ある行と列が交わったところにマークを付けるには 7 2023/01/24 08:46
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
アクセスのクエリでSplit関数は使えないのですか
Access(アクセス)
-
Accessフィールド分割
その他(データベース)
-
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
-
4
「#エラー」の回避
Access(アクセス)
-
5
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
6
Access テキスト型に対する指定桁での0埋め方法
その他(データベース)
-
7
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
8
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
9
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
10
ACCESS VBAのSplit()関数の使用方法
Visual Basic(VBA)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
13
アクセスでエクセルに出力する際のファイル名を日付に
その他(Microsoft Office)
-
14
ACCESS クエリで重複データを最新の1件だけ表示
Access(アクセス)
-
15
AccessのWHERE句において、変数は使用できますか?
Access(アクセス)
-
16
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
17
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
18
Accessの桁区切りについて教えてください。
Access(アクセス)
-
19
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
20
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文 GROUP での1件目を...
-
【VB.NET】日付型の列にNULLを...
-
外部参照してるキーを主キーに...
-
特定の文字列で列を区切るには?
-
identity属性の列に自動採番(SQL)
-
列のヘッダーを含めるのをデフ...
-
伝票番号、品番、在庫としてマ...
-
テーブル列数とデータファイル...
-
Access:クエリーにて集計後に...
-
SQLでn番目からm番目を取得したい
-
SQLで列名を変数にできないでし...
-
テーブル、インデックスのCREAT...
-
Accessでの全データから空白削除
-
項目名に大文字と小文字の混在...
-
特定の列だけをGROUP BYしたい時
-
UPDATE文のWHERE条件に他のテー...
-
エクセル関数:日付のカウント...
-
SQLのクエリ、又はプロシージャ...
-
for whichの使い方
-
差し込み後、元データを変更し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文 GROUP での1件目を...
-
外部参照してるキーを主キーに...
-
SQLで列名を変数にできないでし...
-
列のヘッダーを含めるのをデフ...
-
Access:クエリーにて集計後に...
-
列番号による項目の取得について
-
【VB.NET】日付型の列にNULLを...
-
UPDATE文のWHERE条件に他のテー...
-
SQLによる"あいうえお"順でソー...
-
特定の文字列で列を区切るには?
-
テーブル列数とデータファイル...
-
項目名に大文字と小文字の混在...
-
特定の列だけをGROUP BYしたい時
-
Accessでの全データから空白削除
-
複数列の最大値を求めたい
-
SQLのクエリ、又はプロシージャ...
-
DB2のSQL
-
SQLについて質問です。 テーブ...
-
IDENTITY列の更新で失敗する
-
Accessのリストボックスについて
おすすめ情報