programing おバカの記録

ChatGPTにVBAの問題を代わりに解いてもらう。

最近巷でハヤリ?の表題について検証。留意点としては、こちらの説明でどれだけ具体的にローカライズしてくれるか。デバッグが必要なければ、実務で即戦力。わたしの代わりに仕事をしてもらう。

問題文↓

合否判定シート、合格者シートを使います。
経験年数5年未満は実技・学科の合計が100点、5年以上は120点で合格とし、合格判定シートの判定列に「合格」「不合格」を出力して下さい。
さらに、合格者のみを合格者シートに転記して下さい。ただし、合格者シートの2行目以降は毎回空白の状態から始めること。
さらに、ボタンを設置して、ユーザにマクロ実行を問い合わせて下さい。

おバカ

氏名 経験年数 実技 学科 判定 村松 麻由子 4 16 64 水野 由美子 8 71 32 加納 一哉 8 18 58 川添 友以乃 5 90 26 川島 由宇 11 28 91 前川 寿明 12 42 9 牧瀬 寿々花 12 91 83 木田 哲平 5 91 43 神崎 薫 11 51 46 杉野 英嗣 7 26 5 中尾 孝太郎 12 6 39 玉井 拓郎 8 15 47 梅田 あさみ 8 54 15 沢田 はるみ 15 50 39 首藤 充則 8 45 75 寺田 なつみ 14 1 21 楠 正義 1 33 12 上のテーブルをもとに vbaで、以下の処理を記述してください ボタンを設置して、ユーザにマクロ実行を問い合わせて下さい。 Sheets(“合否判定”)の経験年数5年未満は実技・学科の合計が100点、5年以上は120点で合格とし、Sheets(“合否判定”)の判定列に「合格」「不合格」を出力して下さい。 合格者のみをSheets(“合格者”)の2行目以降から順番に転記して下さい。ただし、Sheets(“合格者”)の2行目以降は毎回空白の状態から始めること。

ChatGPT

以下がVBAコードになります。

Sub Judge() Dim ans As VbMsgBoxResult ans = MsgBox("マクロを実行しますか?", vbYesNo, "確認") If ans = vbNo Then Exit Sub End If
vbnetCopy code'合否判定シートの処理
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Sheets("合否判定")
Dim lastRow As Long
lastRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
    Dim expYear As Integer
    expYear = ws1.Cells(i, 2).Value
    Dim totalScore As Integer
    totalScore = ws1.Cells(i, 3).Value + ws1.Cells(i, 4).Value
    If expYear < 5 And totalScore >= 100 Then
        ws1.Cells(i, 5).Value = "合格"
    ElseIf expYear >= 5 And totalScore >= 120 Then
        ws1.Cells(i, 5).Value = "合格"
    Else
        ws1.Cells(i, 5).Value = "不合格"
    End If
Next i

'合格者シートの処理
Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Sheets("合格者")
ws2.Range("A2:C" & Rows.Count).ClearContents '2行目以降を初期化

Dim j As Long
Dim k As Long
k = 2 '行番号
For j = 2 To lastRow
    If ws1.Cells(j, 5).Value = "合格" Then
        ws2.Cells(k, 1).Value = ws1.Cells(j, 1).Value
        ws2.Cells(k, 2).Value = ws1.Cells(j, 2).Value
        ws2.Cells(k, 3).Value = ws1.Cells(j, 3).Value + ws1.Cells(j, 4).Value
        k = k + 1 '行番号を1つ増やす
    End If
Next j

MsgBox "処理が完了しました。", vbOKOnly, "完了"
End Sub

。。。動いた。ほぼデバッグなしで。なんかもう、勉強とかいいかな。

Back To Top