excel - VBA宏在Sheet1上查找具有数据的单元格范围使用该范围在Sheet2的范围内输入公式
问题描述
Excel 2016
你好
我对VBA不是那么精通,我正在努力学习。
我有一个包含两个工作表的工作簿,Sheet_1
并且Sheet_2
.
我正在尝试编写一个 VB 宏,如果它Is not blank
满足条件,Sheet_1
则插入a formula into a specific range of cells on Sheet_2 worksheet
.
我希望它的工作方式是宏在“表 1”A 列中找到第一个和最后一个具有数据的单元格,并使用它来指定“表 2”A 列上的范围,将公式复制到该范围中。由“Sheet_1”中的范围标识的行。
因此,如果“工作表 1”A 列在单元格 A1 – A100 中有数据,则 VB 宏在“工作表 2”A 列单元格 A2 – A101 中输入公式,并且公式应该以与它相同的方式自动编号数字引用如果它是手动复制下来的。“表 2”有一个标题行,因此有一行偏移量 (A2 – A101)。
我试图发布一张图片,说明公式应该如何工作,但该网站不允许我这样做,但这是 postimage 上的链接。
到目前为止,这是我的宏代码...
Sub InsertFormulasTest()
Dim Answer As VbMsgBoxResult
Dim xRow As Long
Dim xDirect$
Dim ws As Worksheet: Set ws = Sheets("Sheet_1")
Dim ws2 As Worksheet: Set ws2 = Sheets("Sheet_2")
Answer = MsgBox("Insert Formula", vbYesNo, "Insert formula test")
If Answer = vbYes Then
Application.ScreenUpdating = False
xRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
If xDirect$ <> "" Then
ws2.Range("A1").CurrentRegion.ClearContents
xRow = 1
ws2.Range("A2").Formula = "=IF(Sheet_1!A1>"""", ""Has Data"",""No Data"")"
End If
End If
End Sub
解决方案
使用最后一行 (+1),ws2
您可以使用最后一行填充公式,如下所示(我刚刚更改了最后一行):
If Answer = vbYes Then
Application.ScreenUpdating = False
xRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
If xDirect$ <> "" Then
ws2.Range("A1").CurrentRegion.ClearContents
xRow = 1
ws2.Range("A2:A" & xRow).Formula = "=IF('Sheet1'!A1 > """", ""Has Data"",""No Data"")"
End If
End If
虽然我不知道 xDirect$ 是什么以及您正在检查它。
再试一次
If Answer = vbYes Then
xRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws2.Range("A2:A" & xRow).ClearContents
xRow = 1
ws2.Range("A2:A" & xRow).Formula = "=IF('Sheet1'!A1 > """", ""Has Data"",""No Data"")"
End If
推荐阅读
- android - 带有 AndroidX 的 LibGDX(我需要 Fragments 和 WorkManager)
- powerbi - Power Bi DAX:本月总计
- python - 是否可以在 sklearn 中调整线性回归(超)参数
- powershell - PowerShell 和 TFS | 术语“tfpt”未被识别为 cmdlet 的名称
- c++ - C++ 是否有像 javascript 这样的模板文字?
- django - 如何在 graphene-django 解析方法中访问经过身份验证的用户?
- python - Python DJango 的 Dockerfile 在 COPY 上失败
- php - PHP shell_exec 不同的输出
- json - ajax成功后如何用新数据重绘我的数据表?
- c - Vulkan Ray Tracing - 并非来自任何命中着色器的每个原始 Id