好的,
所以这是我用于统计分析的代码片段。我需要将变量“Freq”定义为范围,因为我使用不同的excel公式来加速代码,如AVERAGE(),STEYX(),DEVSQ(),FORECAST()等。我正在使用VBA来做因为我需要快速迭代大量数据,并且仅使用Excel公式感觉有限。
dim Freq as Range
dim sht as Worksheet
dim n as integer
n = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row - 1
Set sht.ThisWorkbook.ActiveSheet
Set Freq = sht.Range("D" & 2 & ":D" & n + 1)
稍后在我的代码中,我想验证“Freq”变量中的任何值是高于还是低于某个值。我知道如何通过检查范围中的每个单元格来执行此操作,或者为该范围指定一个数组,但我觉得为相同数据范围设置第二个变量是还原剂和低效率。
当我在VBA中查看“Freq”对象时,我看到一个Value2(x,1),x是介于1和n之间的任何数字,但我还没有找到一种方法来访问这个值。我试过了:
tmp=Freq.Value(1)
tmp=Freq.Value(1,1)
tmp=Freq.Value2(1)
tmp=Freq.Value2(1,1)
但这都不起作用。
所以,基本上我的问题是:如何在VBA中访问Range对象的特定值?
非常感谢任何帮助!
答案 0 :(得分:1)
Range.Value
接受一个可选参数,因此Freq.Value(1,1)
语法不正确。
要省略可选参数,每个Rory执行`Freq.Value()(1,1)。
或者,将Freq.Value
投射到变体数组:
Dim myArray as Variant
myArray = Freq.Value
MsgBox myArray(1,1)
ExcelRangeValueType
如下所示,省略时将使用默认参数值:
xlRangeValueDefault 10 Default. If the specified Range object is
empty, returns the value Empty (use the
IsEmpty function to test for this case). If
the Range object contains more than one cell,
returns an array of values (use the IsArray
function to test for this case).
xlRangeValueMSPersistXML 12 Returns the recordset representation of the
specified Range object in an XML format.
xlRangeValueXMLSpreadsheet 11 Returns the values, formatting, formulas,
and names of the specified Range object in
the XML Spreadsheet format.
相关:https://fastexcel.wordpress.com/2017/03/13/excel-range-valuevaluetype-what-is-this-parameter/