ChatGPTとは
面白い使い方
文例・例文のランキング
サンプルを総まとめ
始め方(はじめかた)、書き方
テンプレート

ChatGPT に送る指示文(プロンプト)

image

エクセルの関数を作ってもらう

80     29026   シェア


基本的な使い方

エクセルでやりたいことを指定すると関数を用意してくれます。列の情報を入れるのがちょっと面倒ですが、式を考えるのはChatGPTの得意分野です。


りんごの出荷検査を記録した
エクセルのデータがあります。

A列: 品質(合格、または不合格)
B列: 重さ

で、各行に、りんご1個ごとのデータが入っています。

・A列の値に"合格"を含むりんごの数をC1セルに書き込みたい。
・A列の値に"合格"を含むりんごの重さの合計をC2セルに書き込みたい。

エクセルの計算式を教えてください。
>

以下の式を使用して、C1セルに合格したリンゴの数、C2セルに合格したリンゴの重量の合計を計算できます。

C1セルの式: =COUNTIF(A:A,"合格")
C2セルの式: =SUMIF(A:A,"合格",B:B)

これらの式は、A列全体を検索し、"合格"を含むセルの数をカウントするCOUNTIF関数と、A列で"合格"を含むセルに対応するB列の値の合計を計算するSUMIF関数を使用しています。

GPT4でも試してみましょう。


エクセルで、
セルA1の値に応じて、表の「評価」をA2に割り当てたい。
A2に入れる関数を
VLOOKUP関数の場合と、XLOOKUP関数を使った場合の
両方の書き方で教えてください。

例:
A1が 75だと、70点台なので、A2には良
A1が 60だと、60点台なので、A2には可
A1が 59だと、50点台なので、A2には不可

#表
C列|D列
スコア|評価
0 不可
10 不可
20 不可
30 不可
40 不可
50 不可
60 可
70 良
80 良
90 優
100 優
>

A1の値に応じて、表の「評価」をA2に割り当てるために、以下のようにVLOOKUP関数とXLOOKUP関数を使ってそれぞれの式を書くことができます。

VLOOKUP関数の場合:
=VLOOKUP(A1, $C$1:$D$11, 2, TRUE)

XLOOKUP関数の場合:
=XLOOKUP(A1, $C$2:$C$11, $D$2:$D$11, "不可", -1)

VLOOKUP関数は、最も近い小さい値に一致する場合に機能しますが、表は昇順(小さい順)に並んでいる必要があります。一方、XLOOKUP関数は、最も近い大きい値に一致する場合に機能し、昇順または降順に並んだ表で使用できます。両方の関数を使用して、A1の値に応じて評価をA2に表示できます。

他のバリエーション

集計以外の場合にもトライしましょう。
関数を作ってもらいます。



ステップバイステップで考えて、
以下のようなエクセル関数を教えてください。
"""▼★
A1セルに入れた日付の「翌月の10日」を計算してB1セルに入れたい。★▲
"""
>

以下のステップでエクセル関数を作成します。

B1セルを選択します。
「=DATE(YEAR(A1), MONTH(A1) + 1, 10)」と入力します。これにより、A1セルの日付から1ヶ月進んだ日の10日を計算します。
入力が完了したら、Enterキーを押します。
B1セルには、A1セルの翌月の10日が表示されます。

確かに、関数「=DATE(YEAR(A1), MONTH(A1) + 1, 10)」で
うまく動きました。

※ 関数はかならず自分で動作確認をしてください。

では次は、レベルを上げてみましょう。
自分で書くとややこしい「第X番目のY曜日」を例にします。

難しい問題なので、GPT-4を使います。


ステップバイステップで考えて、
以下のようなエクセル関数を教えてください。
"""▼★
A1セルに入れた日付が、
第2金曜日であるかどうかを判定したい★▲
"""
>

指定した日付が特定の第2金曜日であるかを判断する関数を作成するには、以下の手順を試してみてください:

・指定した日付の月と年を取得します。
・その月の第1日(つまり、同じ年月の1日)を取得します。
・その月の第1日から週の終わり(金曜日)までの日数を計算します。
・計算した日数に7を加えて、第2金曜日の日付を取得します。
・最初に指定した日付と第2金曜日の日付が一致するかを確認します。
・これらのステップをエクセルの式で表現すると以下のようになります:

=IF(A1=DATE(YEAR(A1), MONTH(A1), 1 + MOD(5 - WEEKDAY(DATE(YEAR(A1), MONTH(A1), 1)), 7) + 7), "Yes", "No")

動かしてみると、動作がおかしいので指摘します。


木曜日でYesが出てきます
>

すみません。修正した式は以下のようになります。

=IF(A1=DATE(YEAR(A1), MONTH(A1), 1 + MOD(6 - WEEKDAY(DATE(YEAR(A1), MONTH(A1), 1), 7) + 7)), "Yes", "No")

エクセルに入れると動作しないので、再度、指摘します。


引数が少なすぎます、というエラーが出ます
>

申し訳ありません、私の間違いです。修正後の式は以下のようになります:

=IF(A1=DATE(YEAR(A1), MONTH(A1), 1 + MOD(6 - WEEKDAY(DATE(YEAR(A1), MONTH(A1), 1)), 7) + 7), "Yes", "No")

うまく動きました!

このように何回かやり直しを経ることで
正しい答えを出すことができました。

なお、別解にたどり着く読者もいるかも知れません。
答えは一通りではありませんので
時と場合によって回答(ゴール)は変わります。

=IF(DAY(A1) = IF(WEEKDAY(DATE(YEAR(A1), MONTH(A1), 1)) <= 6, 6 - WEEKDAY(DATE(YEAR(A1), MONTH(A1), 1)) + 1, 6 - WEEKDAY(DATE(YEAR(A1), MONTH(A1), 1)) + 1 + 7) + 7, "Yes", "No")
テーマ 家電・パソコン
タスク コーディング
タグ #エクセル#ソフトの使い方
動作環境の例 OpenAI ChatGPT3.5、GPT4
投稿・編集日 2023/04/01・2023/06/15
提案者 まめたろう
出典・参考 なし
留意事項 他の「プロンプト集」へ収載する場合は、出典として本サイトのURLを明示してください



お気に入り機能は登録不要で使えます
※このブラウザ内にのみ保存されます



ご提案を受付ています

サイトの拡充・改善に取り組んでいます。
よろしければ、感想やご提案などお気軽にどうぞ
ご提案フォームを開く