如何在Excel VBA中复制R子集机制?
首先感谢您阅读我的文章。
我想问如何复制excel-vba中的 R子集机制?
这是我的function:
Subdeck2 = deck2[(deck2[,3]>=10 & deck2[,4]<=30),]
该代码使用r创build一个名为Subdeck2
的data.frame
对象,该对象是一个名为Subdeck2
的data.frame
对象的子集,其中包含第二个列值大于或等于10的deck2
行,以及第四个列值小于或等于三十。
我想在excel-vba中复制这个数据,以及一个工作表,它是源数据的工作表的子集。 我认为在Excel中的数组命名是非常有用的引用行和列。
在r中 ,当我不得不重复执行这个操作时,它往往会令人困惑,因为我必须记住已经input的行号和列号。
我只需要在Excel中做一件特别的事情。 我已经买了一本关于vba编程的书,但是它长达1000页,我似乎找不到那里的字子集。
任何build议如何做到这一点或在哪里我可以学习做到这一点将非常感激。 谢谢!
这是一个例子 – 尽pipe你的r函数没有那么简洁。
该方法是注释 – 但基本上,它迭代源范围的行,并检查每个行的条件。 然后,它会select输出范围,并在输出之前将其大小调整为过滤数据的大小。
Option Explicit Sub FilterLikeRSubset() Dim rngData As Range Dim rngRow As Range Dim rngFilter As Range Dim rngOutput As Range 'get data Set rngData = ThisWorkbook.Worksheets("Sheet1").Range("A1:D5") 'iterate rows in data For Each rngRow In rngData.Rows 'test row criteria If rngRow.Cells(1, 3) >= 10 And rngRow.Cells(1, 4) <= 30 Then 'success If rngFilter Is Nothing Then Set rngFilter = rngRow Else Set rngFilter = Union(rngFilter, rngRow) End If End If Next rngRow 'set range for output Set rngOutput = ThisWorkbook.Worksheets("Sheet1").Range("A10") Set rngOutput = rngOutput.Resize(rngFilter.Rows.Count, rngFilter.Columns.Count) 'output rngOutput.Value = rngFilter.Value End Sub
示例输出: