VBA—调用sheet2中数据给出sheet1计算结果

需求:根据sheet1中的信息去sheet2查找相应数据,计算并在sheet1中给出结果。

方法1:for each 遍历:

Option Explicit


Sub Calculation()

Dim m, n As Integer
Dim i, j As Integer
Dim q As Single
Dim mysheet1 As Worksheet
Dim mysheet2 As Worksheet
Dim mycell As Object


Const pi = 3.14

Set mysheet1 = ActiveWorkbook.Worksheets("information")
Set mysheet2 = ActiveWorkbook.Worksheets("test")
'注:此处不能用sheet1,sheet2作为sheet名称识别。
'原因:CSDN:sheet1是一个专有名词,不是任何对象的属性,只能单独使用,
'特指代码所在工作簿的那个sheet1(和顺序无关,是固定的一个表,sheets(1)则和顺序有关)。


m = mysheet2.Range("A1").End(xlDown).Row
Debug.Print m

mysheet2.Activate   '注:选中单元格区域前须先激活数据表。
mysheet2.Range(Cells(2, 5), Cells(m, 5)).Select
Selection.ClearContents

On Error Resume Next
For i = 2 To m
    If mysheet2.Cells(i, 2) = "3M3E1" Then
        For Each mycell In mysheet1.Range("C3:G3")
            If mycell = mysheet2.Cells(i, 4) Then
                q = mysheet2.Cells(i, 3) / 3600
                mysheet2.Cells(i, 5) = q / (mycell.Offset(1, 0).Value - 2 * mycell.Offset(2, 0)) ^ 2 / (pi / 4) * 100000
                '单元格直接可赋值。数值也可使用value,文本也可用format。
                Debug.Print mycell.Offset(1, 0).Value
                Debug.Print mycell.Offset(2, 0).Value
            End If
        Next
    '其他等级此处增加。
    End If
Next

End Sub

方法2:Vlookup 待更新。

另:

1. 选中已用行数或列数:

  • 利用End属性获取数据区域的最后一行行号  (从最后一行向上选中)
FinalRow = Range("A1048576").End(xlUp).Row
  • 利用End属性获取数据区域的最前一行行号(从第一行向下选中)
FirstRow = Range("A1").End(xlDown).Row
  • 利用End属性获取数据区域的最后一列列标 (从最后一列向左选中)
FinalColumn = Range("XFD2").End(xlToLeft).Column
  • 利用End属性获取数据区域的最前一列列标(从第一列向右选中)
FirstColumn = Range("A2").End(xlToRight).Column

2. 设置sheet对象时,不能使用VBA project中显示的对象sheet1,sheet2.

原因:

参考以下链接:

VBA编程中的 sheet1 与 sheets(1)的区别_weixin_33893473的博客-CSDN博客

周日快乐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值