GPT 也没吹的这么神啊,一个 VBA 写了一个小时了

2023-04-22 10:48:23 +08:00
 jsjcjsjc
GPT 也没吹的这么神啊,一个 VBA 写了一个小时了

```
使用 excel VBA 编写一个宏,名字为"数据分析",存放在当前文档
要求如下:
将当前 sheet 的 E 列,F 列,G 列在新的 sheet"analyse"中进行数据透视,如果已经存在 sheet"analyse",则覆盖.
将 E 列放入"行"
将 F 列和 G 列放入"值",并且都为求和项
```
3946 次点击
所在节点    问与答
19 条回复
laila
2023-04-22 10:55:41 +08:00
用 gpt4 试试
beimenjun
2023-04-22 10:55:43 +08:00
检查自己的网络情况

Sub 数据分析()
Dim ws As Worksheet
Set ws = ActiveSheet ' 获取当前活动 sheet
Dim analyse_ws As Worksheet
On Error Resume Next ' 尝试打开 "analyse" sheet ,如果不存在则出错,然后创建一个新的 sheet
Set analyse_ws = ThisWorkbook.Worksheets("analyse")
If analyse_ws Is Nothing Then
Set analyse_ws = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
analyse_ws.Name = "analyse"
End If
On Error GoTo 0

' 数据透视表设置
analyse_ws.Cells.ClearContents
analyse_ws.Activate
Dim pvtTable As PivotTable
Set pvtTable = analyse_ws.PivotTableWizard(SourceType:=xlDatabase, SourceData:=ws.UsedRange, TableDestination:=analyse_ws.Range("A1"), TableName:="数据透视表")
With pvtTable
.PivotFields("E").Orientation = xlRowField
.AddDataField .PivotFields("F"), "F 求和", xlSum
.AddDataField .PivotFields("G"), "G 求和", xlSum
End With
End Sub
jsjcjsjc
2023-04-22 11:18:15 +08:00
@beimenjun 也不行哈
quzard
2023-04-22 11:19:21 +08:00
quzard
2023-04-22 11:19:38 +08:00
Sub 数据分析()
Dim wb As Workbook
Dim wsCurrent As Worksheet, wsAnalyse As Worksheet
Dim pvtCache As PivotCache
Dim pvtTable As PivotTable

' 设置相关对象
Set wb = ThisWorkbook
Set wsCurrent = ActiveSheet

' 检查是否存在名为 "analyse" 的工作表
On Error Resume Next
Set wsAnalyse = wb.Worksheets("analyse")
If Not wsAnalyse Is Nothing Then
Application.DisplayAlerts = False
wsAnalyse.Delete
Application.DisplayAlerts = True
End If
On Error GoTo 0

' 创建新的 "analyse" 工作表
Set wsAnalyse = wb.Worksheets.Add
wsAnalyse.Name = "analyse"

' 创建数据透析缓存
Set pvtCache = wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=wsCurrent.UsedRange)

' 在新工作表创建透析项
Set pvtTable = pvtCache.CreatePivotTable(TableDestination:=wsAnalyse.Range("A3"), TableName:="PivotTable1")

' 设置行字段,列字段和值字段
With pvtTable
With .PivotFields(wsCurrent.Cells(1, 5).Value) '取 E 列的列头名称作为行字段
.Orientation = xlRowField
.Position = 1
End With

With .PivotFields(wsCurrent.Cells(1, 6).Value) '取 F 列的列头名称作为值字段
.Orientation = xlDataField
.Function = xlSum
.Position = 1
.NumberFormat = "#,##0.00_);[Red](#,##0.00)"
End With

With .PivotFields(wsCurrent.Cells(1, 7).Value) '取 G 列的列头名称作为值字段
.Orientation = xlDataField
.Function = xlSum
.Position = 2
.NumberFormat = "#,##0.00_);[Red](#,##0.00)"
End With
End With

MsgBox "数据分析完成"
End Sub
quzard
2023-04-22 11:20:51 +08:00


xiaowowo
2023-04-22 11:40:39 +08:00
楼主是懂钓鱼的。
wonderfulcxm
2023-04-22 11:50:05 +08:00
怎么可能写一个小时,你是拔号上网吗?
jsjcjsjc
2023-04-22 11:53:25 +08:00
@xiaowowo 哈哈哈,被你发现了
jsjcjsjc
2023-04-22 11:53:37 +08:00
@wonderfulcxm 一直再改哈
jsjcjsjc
2023-04-22 11:54:54 +08:00
@quzard 感谢,确实可以~~你用的是哪个版本的 API
TabGre
2023-04-22 12:42:11 +08:00
@quzard 这是哪个镜像站
jsjcjsjc
2023-04-22 13:37:33 +08:00
@quzard 对了,最后你的补充是直接错误还是需要对 vba 有了解哈?
quzard
2023-04-22 14:05:33 +08:00
@jsjcjsjc #12 根据运行错误给 gpt 进行反馈
chonger
2023-04-22 15:00:41 +08:00
确实没那么神,很多东西都是错的,有时候也会一本正经的编故事,但你要知道,这仅仅是个开始。
z7356995
2023-04-22 15:42:53 +08:00
op 这么一钓鱼,底下一堆强迫症帮他 debug 了
jsjcjsjc
2023-04-22 16:21:24 +08:00
@z7356995 见笑了,哈哈
zgl263885
2023-04-22 19:32:51 +08:00
@z7356995 人间清醒啊
tracy4816
2023-04-23 10:40:43 +08:00
虽然知道是钓鱼 但还是回复一下
感觉平时比如后端, 算法的代码, chatgpt 处理的会比较好
但是周末试了一下低基础的编程, xcode 写涉及到 ui+逻辑的 swiftui 代码 就会来回改来改去都没法运行 or 达不到想要的效果;
不确定是因为 xcode 的 api 改的比较快, 导致 2021 年的 data 可能就无法 adjusted 到最新的逻辑, 还是说涉及到 ui+逻辑处理起来确实比较困难, 毕竟是纯文字描述堪比打电话 debug...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/934504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX