Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在VBA中设置公式来赋值单元格值?

如何在VBA中设置公式来赋值单元格值?
EN

Stack Overflow用户
提问于 2019-06-11 16:41:06
回答 4查看 217关注 0票数 0

我正在使用一个公式在Sheet1中设置一个单元格的值,该公式涉及来自Sheet1和Sheet2的单元格。有没有办法从VBA中设置这样的公式?

这是我所拥有的:

我将一些信息从B11填充到M11,一直填到第29行,比如每行填写一个表单。有时,它只有一行包含信息,也可能是所有包含数据的表。

在G列中,我有一个下拉列表,根据该下拉列表中的值,将填充相应的H单元格。

我设法为它设置了公式,但出于安全考虑,我想从VBA中设置它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=IFERROR(VLOOKUP(G11;Data!B2:D13;3;FALSE);0)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-11 17:02:02

您可以将公式保留在G列中,并保护该范围,这样用户就不能对其进行编辑。

或者,使用Worksheet_Change事件处理程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range
Dim val as Variant
' In case the change is NOT in column G, then Exit.
If Intersect(Target, Columns("G")) Is Nothing Then Exit Sub
For Each cl in Intersect(Target, Columns("G"))
    val = Application.Vlookup(cl.Value, ThisWorkbook.Worksheets("Data").Range("B2:D13"), 3, False)
    If IsError(val) Then
        cl.Offset(0, 1).Value = 0
    Else
        cl.offset(0, 1).Value = val
    End If
Next
End Sub

如果需要对多个列执行相同的操作,则会稍微复杂一些,因为在给定表中只能有一个Worksheet_Change处理程序。所以你需要像下面这样修改它。这可以用来简化一些,以减少一些冗余,但这是另一个问题的练习:)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range
Dim val as Variant
' Handles column G
If Not Intersect(Target, Columns("G")) Is Nothing Then 

    For Each cl in Intersect(Target, Columns("G"))
        val = Application.Vlookup(cl.Value, ThisWorkbook.Worksheets("Data").Range("B2:D13"), 3, False)
        If IsError(val) Then
            cl.Offset(0, 1).Value = 0
        Else
            cl.offset(0, 1).Value = val
        End If
    Next
End If
If Not Intersect(Target, Columns("J") Is Nothing Then
    For Each cl in Intersect(Target, Columns("J"))
        val = { your formula used for populating column J }  '## UPDATE THIS WITH YOUR PROPER FORMULA/FUNCTION
        If IsError(val) Then
            cl.Offset(0, 3).Value = 0
        Else
            cl.offset(0, 3).Value = val
        End If
    Next
End Sub
票数 2
EN

Stack Overflow用户

发布于 2019-06-11 16:59:19

如果您正确使用Ranges和参数,WorksheetFunction.Vlookup()会工作得很好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Function SomeFormula() As Variant

    On Error GoTo SomeFormula_Error

    Dim result As Variant
    result = WorksheetFunction.VLookup(Range("G11"), Worksheets("Data").Range("B2:D13"), 3, False)
    SomeFormula = result

    On Error GoTo 0
    Exit Function

SomeFormula_Error:

    SomeFormula = 0

End Function
票数 2
EN

Stack Overflow用户

发布于 2019-06-11 16:52:28

您可以使用宏记录器:转到功能区中的开发人员选项卡,然后记录宏,然后单击带有公式的单元格,然后单击功能区中的停止记录,然后打开VBA,excel将已经为您生成宏。

当我这样做时,我会得到以下结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Sub Macro1()
        Range("A1").Select
    'I have entered my formula in cell A1
        ActiveCell.FormulaR1C1 = _
            "=IFERROR(VLOOKUP(R[10]C[6],Data!R[1]C[1]:R[12]C[3],3,FALSE),0)"
    End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56548256

复制
相关文章
VBA: 禁止单元格移动,防止单元格公式引用失效
文章背景: 在工作生活中,存在文件共享的情况。在数据处理时,单元格公式中往往要引用原始数据源。多人操作时,每个人的操作习惯不同,如果数据源的单元格不小心被人为移动或删除,会导致单元格公式引用失效,产生#REF! 错误。如果进行的是跨表引用,这种错误往往还很难发现。
Exploring
2022/09/20
7820
使用VBA跨单元格分配值
这是在exceloffthegrid.com中看到的一个案例,一个非常有用的节省时间的宏:在单元格之间分配值。
fanjy
2023/08/29
3240
使用VBA跨单元格分配值
VBA: 禁止单元格移动,防止单元格公式引用失效(2)
文章背景: 在Excel中,公式引用无效单元格时将显示 #REF! 错误。当公式所引用的单元格被删除或被粘贴覆盖时最常发生这种情况。
Exploring
2022/09/20
1.2K0
VBA代码:将整个工作簿中的所有公式转换为值
有趣的是,不管工作簿中有多少张表,它都是用一个操作来处理的。通常情况下,都是试图通过遍历工作表来做到这一点,然而并没有那么有效。
fanjy
2023/10/10
1.3K0
VBA代码:将整个工作簿中的所有公式转换为值
Excel VBA解读(140): 从调用单元格中获取先前计算的值
如果有一个依赖于一些计算慢的资源的用户定义函数,可能希望该用户定义函数在大多数情况下只返回其占用的单元格中最后一次计算得到的值,并且只偶尔使用计算慢的资源。
fanjy
2019/07/19
6.8K0
如何在合并单元格使用公式计算装车时间
接下来如何获得每个单元格最开始的行号(例如2)和最末尾的行号(例如7)呢,这需要根据合并单元格数量进行分组
但老师
2022/03/22
7920
如何在合并单元格使用公式计算装车时间
如何在合并单元格使用公式计算装车时间
接下来如何获得每个单元格最开始的行号(例如2)和最末尾的行号(例如7)呢,这需要根据合并单元格数量进行分组
但老师
2021/01/22
1.1K0
如何在合并单元格使用公式计算装车时间
Excel宏教程 (宏的介绍与基本使用)
大家好,又见面了,我是你们的朋友全栈君。 Excel宏教程 (宏的介绍与基本使用) Microsoft excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。但excel的强大远远超过人们的想象–宏的引入使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。 随着支持Windows的应用程序的不断增多和功能的不断增强,越来
全栈程序员站长
2022/08/23
6.5K0
Excel公式技巧27: 在条件格式中使用公式来突出显示单元格
条件格式与公式相配合,往往能够发挥很大的威力,其中之一就是用来突出显示单元格。如下图1所示,在“新建格式规则”对话框中:
fanjy
2020/04/14
3.3K0
Excel公式技巧27: 在条件格式中使用公式来突出显示单元格
VBA专题10-1:使用VBA操控Excel界面之设置单元格格式
本文主要讲解设置工作表单元格或单元格区域格式的VBA代码,包括设置字体、数字格式、文本对齐、填充单元格背景色、设置单元格边框等。
fanjy
2020/06/24
7.2K0
VBA技巧:当单元格区域中包含由公式返回的空单元格时,如何判断?
在VBA中,我们经常会遇到需要检查某个单元格区域是否为空的情形。我们可以使用下面程序中的代码来检查单元格区域是否为空。
fanjy
2022/06/04
2.2K0
Excel公式技巧82:查找指定值所在的单元格
通常,我们会根据指定的位置查找值,例如使用VLOOKUP函数查找指定行列单元格中的值。然而,如果我们知道了某个值,需要查找这个值所在的单元格,这如何使用公式呢?
fanjy
2021/06/01
10.7K0
Excel公式技巧82:查找指定值所在的单元格
Excel图表学习76:Excel中使用超链接的交互式仪表图
仔细观察图1,会发现我们只有一个图表,并且根据用户选择的选项来更改图表的源数据。因此,假设有4个系列的数据——销售额、成本、利润和顾客数量,我们将添加第五个系列。这将始终显示用户选择的系列的数据,如下图2所示。
fanjy
2021/08/31
2.5K0
Excel图表学习76:Excel中使用超链接的交互式仪表图
如何在Markdown中写公式
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。 在很多主流的博客网站,github等地方都会用到Markdown的语法,比如C
chaibubble
2018/01/02
1.3K0
如何在Markdown中写公式
VBA数组(三)数组赋值
大家好,上节介绍了在使用数组之前如何声明数组,本节就来介绍静态数组如何赋值。(动态数组会单独一节讲解)
无言之月
2019/10/13
12.4K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
导语:在前面的文章中有一些与本文类似的案例。要想熟练掌握一门技术,就是要不断地反复练习。
fanjy
2020/05/25
3.1K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
VBA变量5年踩坑吐血精华总结
案例:在「单元格B3」输入不同的行号,然后点击「显示答案」按钮,程序就会自动计算右边相应题目的答案,如何实现?
猴子数据分析
2020/09/15
1.7K0
VBA变量5年踩坑吐血精华总结
【Python】如何在VBA中调用Pyt
背景: 已有一个Python脚本实现了部分功能,想使用VBA直接调用Python脚本 Python脚本如下: import time def hello(name): return "Hello, " + name + "!" print hello("World") #延时关闭windows控制台,使得用户可以看到运行结果 time.sleep(150); 方法如下: <pre name="code" class="vb">Sub test() Call Shell("C:\Pyt
py3study
2020/01/09
1.9K0
VBA代码库09:增强的CELL函数和INFO函数
本文介绍的自定义函数来源于wellsr.com,以Excel的CELL函数和INFO函数为样板,可直接返回工作表或工作簿的名称或工作簿路径,以及与Excel及其操作环境有关的各种信息。本文对其内容进行了整理并分享于此,希望能够有助于VBA代码的学习,同时留存这个自定义函数以备所需。
fanjy
2021/01/20
4.6K0
点击加载更多

相似问题

Excel VBA将单元格值设置为公式

32

VBA设置单元格的公式

41

如何根据vba中差异表的值对单元格进行公式赋值

12

如何在Excel单元格中使用VBA设置公式?

10

如何在VBA的单元格中输入公式的值?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文