如何在excel VBA中编写毕达哥拉斯公式,就像我需要选择A列和B列的所有值一样 Sub-MS() 数据=工作表(“表1”)。选择 行(“1:1”)。选择 行(“11409:11409”)。选择 暗舱长 长 长得一样暗 我没那么长 比尔得=64 n=1 d=0 t=0 “我只要 '对于i=1到最后一行 范围(“a1:a”和单元格(Rows.Count,1)。结束(xlUp.Row)。选择 范围(“b1:b”和单元格(Rows.Count,1)。结束(xlUp)。行。选择 '范围(“a1”)。选择 '范围(“b1”)。选择 范围(“a1,b1”)。选择 当ActiveCell.Value“”时执行此操作 半径=Sqr(范围(“A1”).值*范围(“A1”).值+范围(“B1”).值*范围(“B1”).值) ActiveCell.Offset(1,1)。选择 环 端接头

如何在excel VBA中编写毕达哥拉斯公式,就像我需要选择A列和B列的所有值一样 Sub-MS() 数据=工作表(“表1”)。选择 行(“1:1”)。选择 行(“11409:11409”)。选择 暗舱长 长 长得一样暗 我没那么长 比尔得=64 n=1 d=0 t=0 “我只要 '对于i=1到最后一行 范围(“a1:a”和单元格(Rows.Count,1)。结束(xlUp.Row)。选择 范围(“b1:b”和单元格(Rows.Count,1)。结束(xlUp)。行。选择 '范围(“a1”)。选择 '范围(“b1”)。选择 范围(“a1,b1”)。选择 当ActiveCell.Value“”时执行此操作 半径=Sqr(范围(“A1”).值*范围(“A1”).值+范围(“B1”).值*范围(“B1”).值) ActiveCell.Offset(1,1)。选择 环 端接头,excel,vba,Excel,Vba,我不知道您为什么要这样做(因为它可以通过单元格中的一个简单公式来实现),但看看您问题中的代码残余,我们可以看到您试图实现的目标。我是这样做的: Sub MS() Data = Sheets("Tabelle1").Select Rows("1:1").Select Rows("11409:11409").Select Dim bilder As Long Dim n As Long Dim d As Long Dim

我不知道您为什么要这样做(因为它可以通过单元格中的一个简单公式来实现),但看看您问题中的代码残余,我们可以看到您试图实现的目标。我是这样做的:

Sub MS()    

Data = Sheets("Tabelle1").Select   
Rows("1:1").Select
Rows("11409:11409").Select

Dim bilder As Long
Dim n As Long
Dim d As Long
Dim t As Long

bilder = 64
n = 1    
d = 0
t = 0

'Dim i As Long   

'For i = 1 To lastrow

Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row).Select

Range("b1:b" & Cells(Rows.Count, 1).End(xlUp).Row).Select

'Range("a1").Select

'Range("b1").Select

Range("a1,b1").Select

Do While ActiveCell.Value <> ""       
    Radius = Sqr(Range("A1").Value * Range("A1").Value + Range("B1").Value * Range("B1").Value)      
    ActiveCell.Offset(1, 1).Select 
Loop    

End Sub
输出:


我不知道您为什么要这样做(因为它可以通过单元格中的一个简单公式来实现),但看看您问题中的代码残余,我们可以看到您试图实现的目标。我是这样做的:

Sub MS()    

Data = Sheets("Tabelle1").Select   
Rows("1:1").Select
Rows("11409:11409").Select

Dim bilder As Long
Dim n As Long
Dim d As Long
Dim t As Long

bilder = 64
n = 1    
d = 0
t = 0

'Dim i As Long   

'For i = 1 To lastrow

Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row).Select

Range("b1:b" & Cells(Rows.Count, 1).End(xlUp).Row).Select

'Range("a1").Select

'Range("b1").Select

Range("a1,b1").Select

Do While ActiveCell.Value <> ""       
    Radius = Sqr(Range("A1").Value * Range("A1").Value + Range("B1").Value * Range("B1").Value)      
    ActiveCell.Offset(1, 1).Select 
Loop    

End Sub
输出:


您不需要选择要使用它的范围。你可能想看看

在代码中,您没有将输出写入任何单元格。这里有两种方法可以帮助你实现你想要的

非VBA-方式1

将公式
=SQRT(A1*A1+B1*B1)
=SQRT(A1^2+B1^2)
放入
C1
并向下拖动

VBA-方式2(无循环)

VBA-方式3(无循环)执行此操作的方法有点复杂。可以看出原因


您不需要选择要使用它的范围。你可能想看看

在代码中,您没有将输出写入任何单元格。这里有两种方法可以帮助你实现你想要的

非VBA-方式1

将公式
=SQRT(A1*A1+B1*B1)
=SQRT(A1^2+B1^2)
放入
C1
并向下拖动

VBA-方式2(无循环)

VBA-方式3(无循环)执行此操作的方法有点复杂。可以看出原因


C列
=SQRT(A1*A1+B1*B1)
中的简单公式将给出结果C列
=SQRT(A1*A1+B1*B1)
中的简单公式将给出结果
Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long
    
    Set ws = Sheets("Tabelle1")
    
    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row
        
        With .Range("C1:C" & lRow)
            .Formula = "=SQRT(A1*A1+B1*B1)"
            .Value = .Value
        End With
    End With
End Sub
Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long
    
    Set ws = Sheets("Tabelle1")
    
    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row
        
        With .Range("C1:C" & lRow)
            .Value = Evaluate("index(SQRT((A1:A" & lRow & _
                              ")^2+(B1:B" & lRow & _
                              ")^2),)")

        End With
    End With
End Sub