V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jsjcjsjc
V2EX  ›  问与答

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

  •  
  •   jsjcjsjc · 2023-04-22 10:48:23 +08:00 · 3944 次点击
    这是一个创建于 580 天前的主题,其中的信息可能已经有所发展或是发生改变。
    GPT 也没吹的这么神啊,一个 VBA 写了一个小时了

    ```
    使用 excel VBA 编写一个宏,名字为"数据分析",存放在当前文档
    要求如下:
    将当前 sheet 的 E 列,F 列,G 列在新的 sheet"analyse"中进行数据透视,如果已经存在 sheet"analyse",则覆盖.
    将 E 列放入"行"
    将 F 列和 G 列放入"值",并且都为求和项
    ```
    19 条回复    2023-04-23 10:40:43 +08:00
    laila
        1
    laila  
       2023-04-22 10:55:41 +08:00
    用 gpt4 试试
    beimenjun
        2
    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
        3
    jsjcjsjc  
    OP
       2023-04-22 11:18:15 +08:00
    @beimenjun 也不行哈
    quzard
        4
    quzard  
       2023-04-22 11:19:21 +08:00
    quzard
        5
    quzard  
       2023-04-22 11:19:38 +08:00   ❤️ 1
    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
        6
    quzard  
       2023-04-22 11:20:51 +08:00


    xiaowowo
        7
    xiaowowo  
       2023-04-22 11:40:39 +08:00   ❤️ 7
    楼主是懂钓鱼的。
    wonderfulcxm
        8
    wonderfulcxm  
       2023-04-22 11:50:05 +08:00 via iPhone   ❤️ 1
    怎么可能写一个小时,你是拔号上网吗?
    jsjcjsjc
        9
    jsjcjsjc  
    OP
       2023-04-22 11:53:25 +08:00
    @xiaowowo 哈哈哈,被你发现了
    jsjcjsjc
        10
    jsjcjsjc  
    OP
       2023-04-22 11:53:37 +08:00
    @wonderfulcxm 一直再改哈
    jsjcjsjc
        11
    jsjcjsjc  
    OP
       2023-04-22 11:54:54 +08:00
    @quzard 感谢,确实可以~~你用的是哪个版本的 API
    TabGre
        12
    TabGre  
       2023-04-22 12:42:11 +08:00 via iPhone
    @quzard 这是哪个镜像站
    jsjcjsjc
        13
    jsjcjsjc  
    OP
       2023-04-22 13:37:33 +08:00
    @quzard 对了,最后你的补充是直接错误还是需要对 vba 有了解哈?
    quzard
        14
    quzard  
       2023-04-22 14:05:33 +08:00
    @jsjcjsjc #12 根据运行错误给 gpt 进行反馈
    chonger
        15
    chonger  
       2023-04-22 15:00:41 +08:00
    确实没那么神,很多东西都是错的,有时候也会一本正经的编故事,但你要知道,这仅仅是个开始。
    z7356995
        16
    z7356995  
       2023-04-22 15:42:53 +08:00 via Android
    op 这么一钓鱼,底下一堆强迫症帮他 debug 了
    jsjcjsjc
        17
    jsjcjsjc  
    OP
       2023-04-22 16:21:24 +08:00
    @z7356995 见笑了,哈哈
    zgl263885
        18
    zgl263885  
       2023-04-22 19:32:51 +08:00 via iPhone
    @z7356995 人间清醒啊
    tracy4816
        19
    tracy4816  
       2023-04-23 10:40:43 +08:00
    虽然知道是钓鱼 但还是回复一下
    感觉平时比如后端, 算法的代码, chatgpt 处理的会比较好
    但是周末试了一下低基础的编程, xcode 写涉及到 ui+逻辑的 swiftui 代码 就会来回改来改去都没法运行 or 达不到想要的效果;
    不确定是因为 xcode 的 api 改的比较快, 导致 2021 年的 data 可能就无法 adjusted 到最新的逻辑, 还是说涉及到 ui+逻辑处理起来确实比较困难, 毕竟是纯文字描述堪比打电话 debug...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1124 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 23:38 · PVG 07:38 · LAX 15:38 · JFK 18:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.