0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MS Access 用 ChatGPT プロジェクト

Last updated at Posted at 2025-01-31

ChatGPT ではプロジェクトを作成できます。いつも同じ質問を繰り返すのは面倒なので、プロジェクトの「指示」にあらかじめ質問を書いておき、目的に応じて質問するプロジェクトを選択します。

チャットに「対象項目: △△△△」を記述して、「対象項目を~」と指示しないと期待通りに動作しないときがあります(単に「提供された文章を~」と指示しても期待通りに動作しない)。簡単のために、チャットに「#1 △△△△」を記述して、「#1 の文章を~」と指示します。

「指示」に複数の文を記述しても、期待通りに理解してくれないので、1文で「#番号 から #番号 に従って、△△を〇〇してください」と書いています。(日本語への指示は問題ないようです。)(最初の文と箇条書きの間に空行を入れます。)

プロジェクトにファイルを追加して、指示に「添付したファイルを参考に、~」を追加しました。

 

指示
ファイルにあるスタイルを参考に、#1 から #3 に従って、クエリを整形してください。日本語で回答してください。

#1 改行とインデントを用いてクエリを見やすくしてください
#2 各SQLステートメントを新しい行に配置してください
#3 クエリを整形して、読みやすく表示してください
sample.txt
SELECT
    name,
    email
FROM
    users
WHERE
    id = 1;


INSERT INTO
    users (name, email)
VALUES
    ('John Doe', 'john.doe@example.com');


UPDATE
    users
SET
    email = 'new.email@example.com'
WHERE
    id = 1;


DELETE FROM
    users
WHERE
    id = 1;


SELECT
    users.name,
    users.email,
    orders.order_date,
    orders.amount
FROM
    users
INNER JOIN
    orders
ON
    users.id = orders.user_id
WHERE
    users.id = 1;

 

指示
ファイルにあるスタイルを参考に、#1 から #5 に従って、MS Access の DLookup や DSum などの関数を書き換えてください。日本語で回答してください。

#1 クエリに書き換えてください
#2 改行とインデントを用いてクエリを見やすくしてください
#3 各SQLステートメントを新しい行に配置してください
#4 クエリを整形して、読みやすく表示してください
#5 格納先の変数名は、 AS に使用してください
sample.txt
sample.txt は上と同じ

 

指示
#1 の文章を校正してください。日本語で回答してください。

チャット
#1
ChatGPT ではプロジェクトを作成できます。いつも同じ質問を繰り返すのは面倒なので、プロジェクトの「指示」にあらかじめ質問を書いておき、目的に応じて質問するプロジェクトを選択します。

 

ChatGPT の最初の画面のメニュー

 

Excel 用

以下に、Excel 用を追加しました。

指示
#サンプル1 から #サンプル2 にあるスタイルを参考に、#1 の Excel の VLOOKUP を1文で説明してください。#サンプル2 のように、列名の記述がある場合は、それをそのまま置き換えてください。

#サンプル1
VLOOKUP("最終日", Sheet1!$A:$E, 4, TRUE)
Sheet1シートのA列からE列の範囲内の最初の列で「最終日」を近似一致で検索し、一致する行のD列の値を取得します。

#サンプル2
VLOOKUP("更新日", INVOICE!$A:$E, 4, FALSE)
A列: Date
D列: Address
E列: Tel
INVOICEシートのDate列からTel列の範囲内の最初の列で「更新日」を完全一致で検索し、一致する行のAddress列の値を取得します。

チャット
#1
VLOOKUP("登録日", 会員情報!$A:$G, 5, TRUE)

 

指示
#サンプル1 から #サンプル2 にあるスタイルを参考に、#1 の Excel の SUMIFS を1文で説明してください。#サンプル2 のように、列名の記述がある場合は、それをそのまま置き換えてください。

#サンプル1
SUMIFS(Sheet1!$J:$J, Sheet1!$A:$A, '最終日付', Sheet1!$B:$B, '会社ID')
Sheet1シートの、A列が「最終日付」と一致し、B列が「会社ID」と一致する全ての行のJ列の数値を合計します。

#サンプル2
SUMIFS(台帳!$B:$B, 台帳!$C:$C, "2021/01/*", 台帳!$D:$D, "北海道", 台帳!$E:$E, "食品")
B列: 売上額
C列: 販売日
D列: 地域
E列: 商品カテゴリ
台帳シートの、販売日列が「2021/01/*」と一致し、地域列が「北海道」と一致し、商品カテゴリ列が「食品」と一致する全ての行の売上額列の数値を合計します。

チャット
#1
SUMIFS(Sheet1!$B:$B, Sheet1!$C:$C, "2025/02/*", Sheet1!$D:$D, "北海道", Sheet1!$E:$E, "食品")

 

指示
#サンプル1 から #サンプル5 にあるスタイルを参考に、#1 の Excel の MAX や SUM などの関数を1文で説明してください。#サンプル2 から #サンプル4 のように、列名の記述がある場合は、それをそのまま置き換えてください。

#サンプル1
MAX(Sheet!A:A)
Sheet1シートのA列内の数値の最大値を返します。

#サンプル2
SUM(台帳$D$11:$D$50)
D列: 利益
台帳シートの利益列の11行目から50行目までの範囲にあるデータを合計します。

#サンプル3
OFFSET(U13,0,0,MONTH(B13)))
U列: 日付
B列: 入荷日
「日付」を基点として、0行と0列のオフセットで、「入荷日」の月数に対応する数の行数で新しいセル範囲を返します。

#サンプル4
IF(Z13=0,0,ABS(X13-Z13)/Z13)
Z列: 新価格
X列: 旧価格
「新価格」が0の場合は0を返し、それ以外の場合は「旧価格」と「新価格」の差の絶対値を「新価格」の値で割った結果を返します。

#サンプル5
sheet1.Cells.Find(What:="Address", After:=sheet1.Cells(1, 1), LookAt:=xlPart)
sheet1 のセル内で「Address」という文字列を部分一致で検索しています。検索はセルA1 (Cells(1, 1)) の次のセル(セルB1)から始まり、見つかったセルの参照が返ります。

チャット
#1
MAX(Sheet1!A:A)

 

補足:MS Access のデバッグ

[表示]-[イミディエイト ウィンドウ]を表示します
デバッグでブレークポイントで停止します

 
変数値の確認
? yourVariable1
1.23456

 
関数の複数の引数値の確認
returnVal = DLookup(argument1, argument2, argument3)

先頭に「? """" + 」(または、? と " の次に「returnVal = DLookup(」も含める)
「, 」を「 + """, """ + 」に置換
末尾に「 + """"」(または、" と末尾の間に「)」も含める)

? """" + argument1 + """, """ + argument2 + """, """ + argument3 + """"

 
変数の宣言(Dim)やコメントにはブレークポイントは貼れません

 

0129_11.png

補足:MS Access ノウハウ

レコードセット(DAO.Recordset)の指定したフィールドの value は、最初の(現在の)レコードの value を返します

標準モジュールはすべてのコードに読み込まれています(Public の記述があるとき)

DateSerial は Day 引数に 0 を使用することで、指定した月の「前の月の最後の日」を取得することができます。 DateSerial(Year("2015/01/15"), Month("2015/01/15") - 4, 0) は、2014年の8月31日を返します。なぜなら2014年9月0日と解釈され、日付のローリングバックにより8月の最後の日が得られます

クエリを実行する
[作成]-[クエリデザイン]でクエリを新規作成
SQL ビュー
クエリを書込み、または、貼り付け
[クエリデザイン]-[実行]

独自に作成したクエリ(Insert)を保存する際に、「SQL ステートメントが正しくありません。」というメッセージが表示される場合がありますが、実行は正常に行えます。Insert 先のテーブルはウィンドウを閉じる必要があります

自分の環境でのレコードのエクスポート/インポート
 テーブルを選択し、マウス右クリック、XML ファイルでエクスポートする
 データのみエクスポートする
 必要に応じてデータ(XML)を加工
 テーブルを選択し、マウス右クリック、XML ファイルをインポートする
 既存のテーブルにデータを追加する
 完了

補足:Excel ノウハウ

lastAddress = someSheet.Cells(Rows.Count, col("住所")).End(xlUp).Value
lastRow = someSheet.Cells(Rows.Count, col("住所")).End(xlUp).Row

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?