gpt4 book ai didi

Excel宏来比较行

转载 作者:行者123 更新时间:2023-12-04 21:41:27 24 4
gpt4 key购买 nike

我正在尝试执行以下示例,但无法做到。

Sheet1中的Excel数据:

id     Sysid     option      status
XYZ XT Open status_1
US XT Close Status_1
US XT Open Stauts_2
NJ XT Open Status_2
IND VX Close Status_1
BAN VX Open Status_1
CHN XY Open Status_1
YST xy Close Status_1

在上面的数据 Status_1 和 Sysid 定义了唯一记录,基于这个条件我必须找出哪些记录对于该唯一记录组合具有打开和关闭差异。如果选项不同,我必须使用 excel 宏将该数据复制到不同的工作表。这应该只适用于 id 的 US 和 CHN。假设如果 id 有 US,它应该与基于 sysid 和 Status 的匹配记录进行比较。任何帮助表示赞赏。

输出如下:
 XYZ      XT       Open       status_1
US XT Close Status_1
CHN XY Open Status_1
YST xy Close Status_1

最佳答案

编辑为包括“美国”或“中国”的测试

Sub Tester()

Const COL_ID As Integer = 1
Const COL_SYSID As Integer = 2
Const COL_STATUS As Integer = 4
Const COL_OPTION As Integer = 3
Const VAL_DIFF As String = "XXdifferentXX"

Dim d As Object, sKey As String, id As String
Dim rw As Range, opt As String, rngData As Range
Dim rngCopy As Range, goodId As Boolean
Dim FirstPass As Boolean, arr

With Sheet1.Range("A1")
Set rngData = .CurrentRegion.Offset(1).Resize( _
.CurrentRegion.Rows.Count - 1)
End With
Set rngCopy = Sheet1.Range("F2")

Set d = CreateObject("scripting.dictionary")
FirstPass = True

redo:
For Each rw In rngData.Rows

sKey = rw.Cells(COL_SYSID).Value & "<>" & _
rw.Cells(COL_STATUS).Value

If FirstPass Then
'Figure out which combinations have different option values
' and at least one record with id=US or CHN
id = rw.Cells(COL_ID).Value
goodId = (id = "US" Or id = "CHN")
opt = rw.Cells(COL_OPTION).Value

If d.exists(sKey) Then
arr = d(sKey) 'can't modify the array in situ...
If arr(0) <> opt Then arr(0) = VAL_DIFF
If goodId Then arr(1) = True
d(sKey) = arr 'return [modified] array
Else
d.Add sKey, Array(opt, goodId)
End If

Else
'Second pass - copy only rows with varying options
' and id=US or CHN
If d(sKey)(0) = VAL_DIFF And d(sKey)(1) = True Then
rw.Copy rngCopy
Set rngCopy = rngCopy.Offset(1, 0)
End If
End If

Next rw
If FirstPass Then
FirstPass = False
GoTo redo
End If

End Sub

关于Excel宏来比较行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7533300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com