如何在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