我在excel中有一个庞大的数据表,我需要对其进行排序。 我需要根据Dummy匹配两列。 虚拟对象是C'(呼叫)或' P'(put)。另外两列是“到期日”'和'执行价格'。 我需要对数据表进行排序,使其只包含具有相同到期日期和执行价格的C和P.
我一直试图在没有任何帮助的情况下搜索互联网。我无法弄清楚如何在VBA中编程。
非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
我认为解决方案:(我添加了一个新的列 - 列W
- 它是空的 - 将行标记为&#34;匹配&#34;将在操作后删除。)< / p>
标记双峰(匹配行)的第一个子:
Private Sub FindDoublets()
Dim intRowC As Long
Dim intRowP As Long
Application.ScreenUpdating = False
Range("W1").EntireColumn.Insert
For intRowC = 2 To ActiveSheet.UsedRange.Rows.Count
If Cells(intRowC, 6).Value = "C" Then
For intRowP = 2 To ActiveSheet.UsedRange.Rows.Count
If Cells(intRowP, 6).Value = "P" Then
If Cells(intRowC, 4).Value = Cells(intRowP, 4).Value And Cells(intRowC, 7).Value = Cells(intRowP, 7).Value Then
Cells(intRowC, 23).Value = "Matched"
Cells(intRowP, 23).Value = "Matched"
End If
End If
Next
End If
Next
Application.ScreenUpdating = True
End Sub
要删除的第二个子不匹配,所以没有标记的行:
Private Sub DeleteNotMatchedRows()
Dim intRow As Long
Application.ScreenUpdating = False
For intRow = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
If Cells(intRow, 23).Value <> "Matched" Then
Rows(intRow).Delete shift:=xlShiftUp
End If
Next
Range("W1").EntireColumn.Delete
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
在示例表中,在W列中输入此公式:=IF(F2="C",TRUE,FALSE)
,将此一个输入到X列:=COUNTIFS(D:D,D2,G:G,G2,W:W,NOT(W2))
现在你将拥有&#34; 1&#34;在X列中,当实际行具有相应的C / P行和&#34; 0&#34;除此以外。只需要过滤0-s并删除行
你也可以用宏做同样的事情,但它更复杂。