gpt4 book ai didi

Excel 2010 VBA 引用其他工作表中的特定单元格

转载 作者:行者123 更新时间:2023-12-02 14:55:25 28 4
gpt4 key购买 nike

抱歉,这可能是一个极其基本的 Excel VBA 问题。我刚刚开始学习它,并没有找到太多好的教程。实际上我根本找不到关于该语言的太多有组织的信息。

我有几个名为“Sheet1”和“Sheet2”的工作表。
Sheet1 的第一列和第二列包含一些数字。

我想编写一个宏,它将采用 2 个变量(A 列和 B 列各一个)的函数的结果打印到 Sheet2。但我想在新工作表中将这些结果隔开,以便将 Sheet1 中“i”列的函数结果放入第 1 行和第 4*i 列。这是我到目前为止尝试做的事情,但没有成功,因为我不知道如何正确引用其他工作表中的特定单元格。

抱歉,这是一个非常新的问题,非常感谢任何帮助!

Sub results()

Dim i As Integer, noValues As Integer
noValues = Application.CountA(Range("A:A"))

Sheets("Sheet2").Select
Range("A1").Select
For i = 1 To noValues
Range("A1").Offset(0, 4 * (i - 1)).Select
ActiveCell.FormulaR1C1 = "=Sheet1!A[i] + Sheet1!B[i]"
Next i

End Sub

其中 A[i] 和 B[i] 应该表示第 i 行 A 列或 B 列中的值。

最佳答案

Sub Results2()

Dim rCell As Range
Dim shSource As Worksheet
Dim shDest As Worksheet
Dim lCnt As Long

Set shSource = ThisWorkbook.Sheets("Sheet1")
Set shDest = ThisWorkbook.Sheets("Sheet2")

For Each rCell In shSource.Range("A1", shSource.Cells(shSource.Rows.Count, 1).End(xlUp)).Cells
lCnt = lCnt + 1
shDest.Range("A4").Offset(0, lCnt * 4).Formula = "=" & rCell.Address(False, False, , True) & "+" & rCell.Offset(0, 1).Address(False, False, , True)
Next rCell

End Sub

这循环遍历sheet1的A列,并在sheet2中为每个单元格创建一个公式。为了找到 Sheet1 中的最后一个单元格,我从底部 (shSource.Rows.Count) 和 .End(xlUp) 开始,以获取列中非空白的最后一个单元格。

为了创建公式的元素,我使用工作表上单元格的地址属性。我正在使用 Address 的三个参数。前两个是 RowAbsolute 和 ColumnAbsolute,均设置为 false。我不关心第三个参数,但我将第四个参数(外部)设置为 True,以便它包含工作表名称。

我更喜欢从源到目的地,而不是相反。但这只是个人喜好。如果您想在目的地工作,

Sub Results3()

Dim i As Long, lCnt As Long
Dim sh As Worksheet

lCnt = Application.WorksheetFunction.CountA(ThisWorkbook.Sheets("Sheet1").Columns(1))
Set sh = ThisWorkbook.Sheets("Sheet2")

Const sSOURCE As String = "Sheet1!"

For i = 1 To lCnt
sh.Range("A1").Offset(0, 4 * (i - 1)).Formula = "=" & sSOURCE & "A" & i & " + " & sSOURCE & "B" & i
Next i

End Sub

关于Excel 2010 VBA 引用其他工作表中的特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766100/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com