Stage1st

标题: 问个简单vba问题 [打印本页]

作者: 银光猹    时间: 2024-2-14 23:28
标题: 问个简单vba问题
单元格A1为 公式 =A3-B3-C3
单元格B1为 值10

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

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


作者: 银光猹    时间: 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
作者: vacuumsword    时间: 2024-2-14 23:36
完全没看懂你这需求。啥叫引用并减去b1还保持原公式“格式”?感觉不是copilot不行,而是你问题没问对

----发送自 Xiaomi 2304FPN6DC,Android 14
作者: 革萌    时间: 2024-2-14 23:37
VBA的第一反应难道不是录一个宏看看么
作者: bubuyu    时间: 2024-2-14 23:40
没明白什么叫引用并减去B1?
如果不改变公式也不改变A3、B3、C3的数值,A1怎么会显示-B1的数值呢
作者: 王怡人    时间: 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`。

请确保你修改代码中的工作表名称以匹配你正在使用的工作表。
作者: 银光猹    时间: 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错误,要不就是前几个引用被加上引号,变成文本了
作者: 银光猹    时间: 2024-2-14 23:41
vacuumsword 发表于 2024-2-14 23:36
完全没看懂你这需求。啥叫引用并减去b1还保持原公式“格式”?感觉不是copilot不行,而是你问题没问对

--- ...

抽风
作者: 银光猹    时间: 2024-2-14 23:44
bubuyu 发表于 2024-2-14 23:40
没明白什么叫引用并减去B1?
如果不改变公式也不改变A3、B3、C3的数值,A1怎么会显示-B1的数值呢 ...

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

引用单元格去减,而不是直接减去他的值 10
作者: vacuumsword    时间: 2024-2-14 23:47
银光猹 发表于 2024-2-14 23:41
可能就是需求没表达好

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

你这都写出来了就这么填入a1就行吧?要么你需要的其实是绝对引用$B$1?
作者: bubuyu    时间: 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

作者: anubis_s08    时间: 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
作者: 银光猹    时间: 2024-2-14 23:55
王怡人 发表于 2024-2-14 23:41
帮你问了下AI,现在没条件帮你验证,只能你自己试试了

```vba

成功了……谢谢

随手用的百度AI,让他修改代码,感觉越用越傻,遗漏需求还重复错误
作者: fuckingworld    时间: 2024-2-15 00:10
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Stage1st (https://bbs.saraba1st.com/2b/) Powered by Discuz! X3.5