如何在Excel VBA中复制R子集机制?

首先感谢您阅读我的文章。

我想问如何复制excel-vba中的 R子集机制?

这是我的function:

Subdeck2 = deck2[(deck2[,3]>=10 & deck2[,4]<=30),] 

该代码使用r创build一个名为Subdeck2data.frame对象,该对象是一个名为Subdeck2data.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 

示例输出:

在这里输入图像说明