Stage1st

 找回密码
 立即注册
搜索
查看: 2099|回复: 1
打印 上一主题 下一主题

[求助] 问个简单vba问题

[复制链接]
     
跳转到指定楼层
楼主
发表于 2024-2-14 23:28 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单元格A1为 公式 =A3-B3-C3
单元格B1为 值10

我想让单元格A1引用并减去单元格B1,并保留公式格式,让其正确显示计算结果

对代码一窍不通,让AI写了点,结果这个需求一直不能完成,显示1004错误

回复

使用道具 举报

     
2#
 楼主| 发表于 2024-2-14 23:31 | 只看该作者
AI写成这样:

Sub SubtractCellFromFormula()

    ' 获取A1单元格的公式
    Dim originalFormula As String
    originalFormula = Range("A1").Formula

    ' 如果A1有公式,则修改它
    If originalFormula <> "" Then
        ' 修改公式以减去B1的值
        Range("A1").Formula = "=" & originalFormula & " - B1"
    End If

End Sub
回复

使用道具 举报

     
3#
发表于 2024-2-14 23:36 来自手机 | 只看该作者
完全没看懂你这需求。啥叫引用并减去b1还保持原公式“格式”?感觉不是copilot不行,而是你问题没问对

----发送自 Xiaomi 2304FPN6DC,Android 14
回复

使用道具 举报

     
4#
发表于 2024-2-14 23:37 | 只看该作者
VBA的第一反应难道不是录一个宏看看么
回复

使用道具 举报

     
5#
发表于 2024-2-14 23:40 | 只看该作者
没明白什么叫引用并减去B1?
如果不改变公式也不改变A3、B3、C3的数值,A1怎么会显示-B1的数值呢
回复

使用道具 举报

     
6#
发表于 2024-2-14 23:41 来自手机 | 只看该作者
帮你问了下AI,现在没条件帮你验证,只能你自己试试了

```vba
Sub SubtractB1FromA1()
    ' 获取工作表
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 根据实际的工作表名称修改

    ' 读取A1单元格中现有的公式
    Dim originalFormula As String
    originalFormula = ws.Range("A1").Formula

    ' 修改A1单元格中的公式以引用B1单元格
    ws.Range("A1").Formula = originalFormula & "-" & ws.Range("B1").Address(False, False)
End Sub
```

这段代码同样首先设置了工作表对象`ws`,然后读取了A1单元格中现有的公式并存储在变量`originalFormula`中。之后,将修改后的公式(原有公式加上对B1单元格的引用)重新赋值给A1单元格。

在Excel中运行这个宏之后,无论A1中原来是什么公式,都会在其末尾添加上减去B1单元格的值。

要运行这个宏,请按照以下步骤操作:

1. 在Excel中按下`Alt + F11`键打开VBA编辑器。
2. 在VBA编辑器中,选择“插入”菜单下的“模块”选项。
3. 在新模块中粘贴上述代码。
4. 按下`F5`键运行`SubtractB1FromA1`宏,或者关闭VBA编辑器回到Excel界面,在“开发工具”选项卡下选择“宏”,找到并运行`SubtractB1FromA1`。

请确保你修改代码中的工作表名称以匹配你正在使用的工作表。
回复

使用道具 举报

     
7#
 楼主| 发表于 2024-2-14 23:41 来自手机 | 只看该作者
本帖最后由 银光猹 于 2024-2-14 23:42 编辑
vacuumsword 发表于 2024-2-14 23:36
完全没看懂你这需求。啥叫引用并减去b1还保持原公式“格式”?感觉不是copilot不行,而是你问题没问对

--- ...

可能就是需求没表达好

我想让A1公式变为 =A3-B3-C3-B1

反反复复让AI修改,要不就是出现1004错误,要不就是前几个引用被加上引号,变成文本了
回复

使用道具 举报

     
8#
 楼主| 发表于 2024-2-14 23:41 来自手机 | 只看该作者
vacuumsword 发表于 2024-2-14 23:36
完全没看懂你这需求。啥叫引用并减去b1还保持原公式“格式”?感觉不是copilot不行,而是你问题没问对

--- ...

抽风
回复

使用道具 举报

     
9#
 楼主| 发表于 2024-2-14 23:44 来自手机 | 只看该作者
bubuyu 发表于 2024-2-14 23:40
没明白什么叫引用并减去B1?
如果不改变公式也不改变A3、B3、C3的数值,A1怎么会显示-B1的数值呢 ...

公式变为 =A3-B3-C3-B1

引用单元格去减,而不是直接减去他的值 10
回复

使用道具 举报

     
10#
发表于 2024-2-14 23:47 | 只看该作者
银光猹 发表于 2024-2-14 23:41
可能就是需求没表达好

我想让A1公式变为 =A3-B3-C3-B1

你这都写出来了就这么填入a1就行吧?要么你需要的其实是绝对引用$B$1?
回复

使用道具 举报

     
11#
发表于 2024-2-14 23:48 | 只看该作者
本帖最后由 bubuyu 于 2024-2-14 23:50 编辑
银光猹 发表于 2024-2-14 23:44
公式变为 =A3-B3-C3-B1

引用单元格去减,而不是直接减去他的值 10

这样就可以吧?
Sub test()
    f = Range("A1").Formula
    f= f + "-B1"
    Range("A1").Formula = f
End Sub
回复

使用道具 举报

     
12#
发表于 2024-2-14 23:50 来自手机 | 只看该作者
本帖最后由 anubis_s08 于 2024-2-14 23:53 编辑
银光猹 发表于 2024-2-14 23:44
公式变为 =A3-B3-C3-B1

引用单元格去减,而不是直接减去他的值 10

还是看不懂,不是减去单元格的值而是减去单元格?

你想减那个值?不是10?

—— 来自 HUAWEI VOG-AL10, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
13#
 楼主| 发表于 2024-2-14 23:55 | 只看该作者
王怡人 发表于 2024-2-14 23:41
帮你问了下AI,现在没条件帮你验证,只能你自己试试了

```vba

成功了……谢谢

随手用的百度AI,让他修改代码,感觉越用越傻,遗漏需求还重复错误
回复

使用道具 举报

头像被屏蔽
     
14#
发表于 2024-2-15 00:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|stage1st 沪ICP备13020230号-1 沪公网安备 31010702007642号

GMT+8, 2024-5-11 22:32 , Processed in 0.022128 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表