对不起,这可能是一个非常基本的Excel VBA问题.我刚刚开始学习它,而且我没有找到很好的教程.实际上,我根本找不到关于语言的有组织的信息.
我有一些名为"Sheet1"和"Sheet2"的工作表.
Sheet1的第一列和第二列包含一些数字.
我想编写一个宏来打印函数的结果,该函数将2个变量(从A列和B列各一个)传递给Sheet2.但我想在新工作表中将这些结果分开,以便Sheet1中Column'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
Run Code Online (Sandbox Code Playgroud)
其中A [i]和B [i]应表示A列或B列中的值,即行i.
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
Run Code Online (Sandbox Code Playgroud)
这将循环通过sheet1的A列,并在sheet2中为每个单元格创建一个公式.为了找到Sheet1中的最后一个单元格,我从底部(shSource.Rows.Count)和.End(xlUp)开始,以获取列中非空白的最后一个单元格.
要创建公式的元素,我使用Sheet上单元格的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136227 次 |
| 最近记录: |