- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 excel 中有 2 个选项卡,我对 VBA 有点陌生:
运营:
详情:
看看这个:“操作”选项卡中的说明字段将包含不同的“操作代码”(它可能包含 1 个操作代码、2 个操作代码或更多)。它是一个 11 位数字。问题是这个字段是固定的,有时操作代码会被截断。
只有那些带有 的号码11 位的确切数量 必须考虑
我想实现这一点(必须按顺序执行):
id|id|id|id|id|id|id|TYPE|NUMBER |SECTOR|DESCRIPTION |MONEY|AMOUNT|TOTAL|WEB|||DIFFERENCE||
1 |1 |1 |1 |1 |1 |1 |FAC |B0001100005429 |XX |SADADECO 19278294999 |XX |XX |XX |XX ||| ||
1 |1 |1 |1 |1 |1 |1 |N/C |B0001100005445 |XX |SADADECO 19278294999 |XX |XX |XX |23 ||| ||
2 |2 |2 |2 |2 |2 |2 |FAC |B0001100006545 |XX |ORDONEZC9920 19299490733 |XX |XX |XX |XX ||| ||
2 |2 |2 |2 |2 |2 |2 |N/C |B0001100005449 |XX |ORDONEZC9920 19299490733 |XX |XX |XX |33 ||| ||
3 |3 |3 |3 |3 |3 |3 |FAC |B0001100007429 |XX |rer 19266048445 19266048223 |XX |XX |XX |XX ||| ||
3 |3 |3 |3 |3 |3 |3 |N/C |B0001100007729 |XX |rer 19266048445 19266048223 |XX |XX |XX |33 ||| ||
4 |4 |4 |4 |4 |4 |4 |FAC |B0001100007829 |XX |IGN_GONTAN 19266048445 19299494|XX |XX |XX |XX ||| ||
4 |4 |4 |4 |4 |4 |4 |N/C |B0001100009029 |XX |IGN_GONTAN 19266048445 19299494|XX |XX |XX |434||| ||
5 |5 |5 |5 |5 |5 |5 |FAC |B0001100009229 |XX |rer 19266049495 |XX |XX |XX |XX ||| ||
6 |6 |6 |6 |6 |6 |6 |FAC |B0001100009429 |XX |rer 19266049499 |XX |XX |XX |XX ||| ||
7 |7 |7 |7 |7 |7 |7 |FAC |B0001100009929 |XX |rer 19266049999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REC |C0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REC |D0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REV |E0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
9 |9 |9 |9 |9 |9 |9 |FAC |Z0001100004929 |XX |FSDKFKS 19551194999 |XX |XX |XX |XX ||| ||
9 |9 |9 |9 |9 |9 |9 |FAC |Z0001109904929 |XX |FSDKFKS 19551194999 |XX |XX |XX |XX ||| ||
10|10|10|10|10|10|10|REC |W0001109904729 |XX |AFDKFKR 19711194999 |XX |XX |XX |XX ||| ||
10|10|10|10|10|10|10|REC |W0001108904729 |XX |AFDKFKR 19711194999 |XX |XX |XX |XX ||| ||
Date |operation|type| type| transaction number |operation |money| linked | note
27/02/2022| null |null| null| null |19278294999|23 |B0001100005445|DONE
27/02/2022| null |null| null| null |19299490733|33 |B0001100005449|DONE
27/02/2022| null |null| null| null |19266048223|33 |B0001100007729|DONE
27/02/2022| null |null| null| null |19266048445|434 |B0001100009029|DONE
27/02/2022| null |null| null| null |19266049495|23 |B0001100009229|
27/02/2022| null |null| null| null |19266049499|223 |B0001100009429|
27/02/2022| null |null| null| null |19266049999|424 |B0001100009929|
27/02/2022| null |null| null| null |19271194999|74574|E0001100004929|
id|id|id|id|id|id|id|TYPE|NUMBER |SECTOR|DESCRIPTION |MONEY|AMOUNT|TOTAL|WEB|||DIFFERENCE||
1 |1 |1 |1 |1 |1 |1 |FAC |B0001100005429 |XX |SADADECO 19278294999 |XX |XX |XX |XX ||| ||
1 |1 |1 |1 |1 |1 |1 |N/C |B0001100005445 |XX |SADADECO 19278294999 |XX |XX |XX |XX ||| ||
2 |2 |2 |2 |2 |2 |2 |FAC |B0001100006545 |XX |ORDONEZC9920 19299490733 |XX |XX |XX |XX ||| ||
2 |2 |2 |2 |2 |2 |2 |N/C |B0001100005449 |XX |ORDONEZC9920 19299490733 |XX |XX |XX |XX ||| ||
3 |3 |3 |3 |3 |3 |3 |FAC |B0001100007429 |XX |rer 19266048445 19266048223 |XX |XX |XX |XX ||| ||
3 |3 |3 |3 |3 |3 |3 |N/C |B0001100007729 |XX |rer 19266048445 19266048223 |XX |XX |XX |XX ||| ||
4 |4 |4 |4 |4 |4 |4 |FAC |B0001100007829 |XX |IGN_GONTAN 19266048445 19299494|XX |XX |XX |XX ||| ||
4 |4 |4 |4 |4 |4 |4 |N/C |B0001100009029 |XX |IGN_GONTAN 19266048445 19299494|XX |XX |XX |XX ||| ||
5 |5 |5 |5 |5 |5 |5 |FAC |B0001100009229 |XX |rer 19266049495 |XX |XX |XX |XX ||| ||
6 |6 |6 |6 |6 |6 |6 |FAC |B0001100009429 |XX |rer 19266049499 |XX |XX |XX |XX ||| ||
7 |7 |7 |7 |7 |7 |7 |FAC |B0001100009929 |XX |rer 19266049999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REC |C0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REC |D0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REV |E0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
9 |9 |9 |9 |9 |9 |9 |FAC |Z0001100004929 |XX |FSDKFKS 19551194999 |XX |XX |XX |XX ||| ||
9 |9 |9 |9 |9 |9 |9 |FAC |Z0001109904929 |XX |FSDKFKS 19551194999 |XX |XX |XX |XX ||| ||
10|10|10|10|10|10|10|REC |W0001109904729 |XX |AFDKFKR 19711194999 |XX |XX |XX |XX ||| ||
10|10|10|10|10|10|10|REC |W0001108904729 |XX |AFDKFKR 19711194999 |XX |XX |XX |XX ||| ||
详细信息表:
Date |operation|type| type| transaction number |operation |money| linked| note
27/02/2022| null |null| null| null |19278294999|23 | |
27/02/2022| null |null| null| null |19299490733|33 | |
27/02/2022| null |null| null| null |19266048223|33 | |
27/02/2022| null |null| null| null |19266048445|434 | |
27/02/2022| null |null| null| null |19266049495|23 | |
27/02/2022| null |null| null| null |19266049499|223 | |
27/02/2022| null |null| null| null |19266049999|424 | |
27/02/2022| null |null| null| null |19271194999|74574| |
27/02/2022| null |null| null| null |19266048223|343 | |
Sub M_snb()
Dim wsOps As Worksheet, wsDets As Worksheet
Dim c As Range, col As Collection, v, m
Dim dataOps, dataDets, rO As Long, rD As Long
Set wsOps = ThisWorkbook.Worksheets("Operations")
Set wsDets = ThisWorkbook.Worksheets("Details")
dataOps = wsOps.Range("A1").CurrentRegion.Value
dataDets = wsDets.Range("A1").CurrentRegion.Value
For rO = 2 To UBound(dataOps, 1)
Set col = AllNumbers(dataOps(rO, 3))
For Each v In col
For rD = 2 To UBound(dataDets, 1)
If CStr(dataDets(rD, 1)) = v Then
dataDets(rD, 3) = dataOps(rO, 1)
dataOps(rO, 4) = dataOps(rO, 4) + dataDets(rD, 2)
End If
Next rD
Next v
Next rO
DropArray dataOps, wsOps.Range("A1")
DropArray dataDets, wsDets.Range("A1")
End Sub
'return all 11-digit strings in v as a Collection
Function AllNumbers(v) As Collection
Const NUM_DIGITS As Long = 11
Dim m As Object, mc As Object, col As New Collection, txt, i As Long, patt, ss
txt = " " & v & " "
patt = String(NUM_DIGITS, "#")
i = 2
For i = 2 To Len(txt) - NUM_DIGITS
ss = Mid(txt, i, 11)
If ss Like patt Then
If Not Mid(txt, i - 1, 1) Like "#" Then
If Not Mid(txt, i + NUM_DIGITS, 1) Like "#" Then
col.Add ss
End If
End If
End If
Next i
Set AllNumbers = col
End Function
'Utility method: put a 2d array on a sheet at rng
Sub DropArray(arr, rng As Range)
rng.Cells(1).Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr
End Sub
id|id|id|id|id|id|id|TYPE|NUMBER |SECTOR|DESCRIPTION |MONEY|AMOUNT|TOTAL|WEB|||DIFFERENCE||
1 |1 |1 |1 |1 |1 |1 |FAC |B0001100005429 |XX |SADADECO 19278294999 |XX |XX |XX |XX ||| ||
1 |1 |1 |1 |1 |1 |1 |N/C |B0001100005445 |XX |SADADECO 19278294999 |XX |XX |XX |23 ||| ||
2 |2 |2 |2 |2 |2 |2 |FAC |B0001100006545 |XX |ORDONEZC9920 19299490733 |XX |XX |XX |XX ||| ||
2 |2 |2 |2 |2 |2 |2 |N/C |B0001100005449 |XX |ORDONEZC9920 19299490733 |XX |XX |XX |33 ||| ||
3 |3 |3 |3 |3 |3 |3 |FAC |B0001100007429 |XX |rer 19266048445 19266048223 |XX |XX |XX |XX ||| ||
3 |3 |3 |3 |3 |3 |3 |N/C |B0001100007729 |XX |rer 19266048445 19266048223 |XX |XX |XX |33 ||| ||
4 |4 |4 |4 |4 |4 |4 |FAC |B0001100007829 |XX |IGN_GONTAN 19266048445 19299494|XX |XX |XX |XX ||| ||
4 |4 |4 |4 |4 |4 |4 |N/C |B0001100009029 |XX |IGN_GONTAN 19266048445 19299494|XX |XX |XX |434||| ||
5 |5 |5 |5 |5 |5 |5 |FAC |B0001100009229 |XX |rer 19266049495 |XX |XX |XX |XX ||| ||
6 |6 |6 |6 |6 |6 |6 |FAC |B0001100009429 |XX |rer 19266049499 |XX |XX |XX |XX ||| ||
7 |7 |7 |7 |7 |7 |7 |FAC |B0001100009929 |XX |rer 19266049999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REC |C0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REC |D0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
8 |8 |8 |8 |8 |8 |8 |REV |E0001100004929 |XX |SADADECO 19271194999 |XX |XX |XX |XX ||| ||
9 |9 |9 |9 |9 |9 |9 |FAC |Z0001100004929 |XX |FSDKFKS 19551194999 |XX |XX |XX |XX ||| ||
9 |9 |9 |9 |9 |9 |9 |FAC |Z0001109904929 |XX |FSDKFKS 19551194999 |XX |XX |XX |XX ||| ||
10|10|10|10|10|10|10|REC |W0001109904729 |XX |AFDKFKR 19711194999 |XX |XX |XX |XX ||| ||
10|10|10|10|10|10|10|REC |W0001108904729 |XX |AFDKFKR 19711194999 |XX |XX |XX |XX ||| ||
Date |operation|type| type| transaction number |operation |money| linked | note
27/02/2022| null |null| null| null |19278294999|23 |B0001100005445|DONE
27/02/2022| null |null| null| null |19299490733|33 |B0001100005449|DONE
27/02/2022| null |null| null| null |19266048223|33 |B0001100007729|DONE
27/02/2022| null |null| null| null |19266048445|434 |B0001100009029|DONE
27/02/2022| null |null| null| null |19266049495|23 |B0001100009229|
27/02/2022| null |null| null| null |19266049499|223 |B0001100009429|
27/02/2022| null |null| null| null |19266049999|424 |B0001100009929|
27/02/2022| null |null| null| null |19271194999|74574|E0001100004929|
DO NOTE that field "web" from tab "Operations" contains an Excelformula and when a value is updated by using the VBA it should notdelete the formula for the other cells
最佳答案
编辑 : 终于修复和测试了(感觉不好让它未完成)。这基于您共享的工作簿。不再使用数组作为数据,因为您似乎也有公式。
Sub M_snb()
Const VAL_NC As String = "N/C"
Const VAL_FAC As String = "FAC"
'column positions - ops
Const COL_OPS_TYPE As Long = 8
Const COL_OPS_NUMBER As Long = 9
Const COL_OPS_DESCR As Long = 11
Const COL_OPS_MONEY As Long = 12
'column positions - details
Const COL_DET_OPS_NUM As Long = 5
Const COL_DET_MONEY As Long = 6
Const COL_DET_LINKED As Long = 7
Const COL_DET_NOTE As Long = 8
Dim wsOps As Worksheet, wsDets As Worksheet
Dim c As Range, col As Collection, v, m
Dim rngOps As Range, rngDets As Range, rO As Long, rD As Long, rw
Dim dict As Object, colRows As Collection
Dim bFAC As Boolean, bNC As Boolean, amt, typ
Set dict = CreateObject("scripting.dictionary")
Set wsOps = ThisWorkbook.Worksheets("Operations")
Set wsDets = ThisWorkbook.Worksheets("Details")
Set rngOps = wsOps.Range("A1").CurrentRegion
Set rngDets = wsDets.Range("A1").CurrentRegion
'Loop over ops data and find all unique 11-digit numbers,
' and store the rows they're found on in a collection per number
For rO = 2 To rngOps.Rows.Count
Set col = AllNumbers(rngOps.Cells(rO, COL_OPS_DESCR).Value)
For Each v In col
If Not dict.exists(v) Then dict.Add v, New Collection 'new number?
dict(v).Add rO 'store current row number
Next v
Next rO
For Each v In dict.keys 'loop the unique numbers
Set colRows = dict(v) 'all Operations rows which contain this number...
bFAC = False
bNC = False
For Each rw In colRows 'loop rows and check "types"
Select Case rngOps.Cells(rw, COL_OPS_TYPE).Value
Case VAL_NC: bNC = True
Case VAL_FAC: bFAC = True
End Select
If bFAC And bNC Then Exit For 'already found both
Next rw
'loop over Details and see what rows can be matched to this number
' you'll need to figure out the details here...
For rD = 2 To rngDets.Rows.Count
If CStr(rngDets.Cells(rD, COL_DET_OPS_NUM).Value) = v Then
rngDets.Cells(rD, COL_DET_LINKED).Value = rngOps.Cells(colRows(1), COL_OPS_NUMBER).Value
'dataOps(rO, 4) = dataOps(rO, 4) + dataDets(rD, 2) 'fix this
If bNC And bFAC Then 'have both types?
rngDets.Cells(rD, COL_DET_NOTE).Value = "DONE"
End If
'copy the "money" value from Details back to Operations
amt = rngDets.Cells(rD, COL_DET_MONEY).Value
For Each rw In colRows
If rngOps.Cells(rw, COL_OPS_TYPE).Value = VAL_NC Then
rngOps.Cells(rw, COL_OPS_MONEY).Value = amt
End If
Next rw
End If
Next rD
Next v
End Sub
'return all 11-digit strings in v as a Collection
Function AllNumbers(v) As Collection
Const NUM_DIGITS As Long = 11
Dim m As Object, mc As Object, col As New Collection, txt, i As Long, patt, ss
txt = " " & v & " "
patt = String(NUM_DIGITS, "#")
i = 2
For i = 2 To Len(txt) - NUM_DIGITS
ss = Mid(txt, i, 11)
If ss Like patt Then
If Not Mid(txt, i - 1, 1) Like "#" Then
If Not Mid(txt, i + NUM_DIGITS, 1) Like "#" Then
col.Add ss
End If
End If
End If
Next i
Set AllNumbers = col
End Function
关于excel - 试图用 VBA 找到重复项来做一些奇怪的事情(一个棘手的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71289108/
我想知道如何考虑需要您做出某些选择才能看到最终结果的搜索系统。我说的是 select 表单,您可以在其中根据您的选择继续操作,然后您会看到结果。 下面描述了我正在谈论的一个随机示例。想象一下 Init
您好,我目前正在编写一些软件来管理我们的库存。我搜索了 2 个表 master_stock(保存每一个股票代码和描述)库存(保存库存代码、地点、数量...) 一切都很好,但这是我遇到的问题。 假设我的
我有 2 个表,我想合并其数据。id 是我的关键字段(增量且不同)。表1和表2字段说明例如:id - 名称 - 值 我想将表2的所有数据插入表1,它们有不同的数据,但在某些行中有相同的id。 所以当我
我正在努力解决汇编中的一个问题,我必须获取十六进制代码的第一个字节 (FF) 并将其复制到整个值中: 0x045893FF input 0xFFFFFFFF output 我所做的
我有 Eclipse Indigo 版本,我可以在其中运行 Java 和 C++ 项目。 但我只想使用另一个 Eclipse 来编写 C++ 项目。所以我将 eclipse(不是工作区)的源文件夹复制
This question already has answers here: What is a NullPointerException, and how do I fix it? (12个答案)
This question already has answers here: Numbering rows within groups in a data frame (8个答案) 5个月前关闭。
我知道用q记录到寄存器中,但我想知道是否可以设置一些东西来快速调用最后一个记录,就像一样。 回顾最后一个简短的编辑命令(有关 的讨论请参阅 here。)。 我知道@@,但它似乎只有在执行@z之后才起作
来自 Eclipse 并且一直习惯于复制行,发现 Xcode 没有这样的功能是很奇怪的。或者是吗? 我知道可以更改系统范围的键绑定(bind),但这不是我想要的。 最佳答案 要删除一行:Ctrl-A
假设我有一个包含元素的列表,例如[1,2,3,4,5,6,7,8]。我想创建长度为 N 的该元素的所有排列。 因此,对于N = 4,它将是[[1,1,1,1],[1,1,1,2],[1,1,2,1],
我有一个带有 JMenu 的 JFrame。当我在某些情况下添加包含图像的 JPanel 时,程序首次启动时菜单会重复。调整大小时重复的菜单消失。任何建议都非常感激。谢谢。代码如下: public c
我正在尝试查找目录中文件的重复项。 我对这个 block 有一个问题,它以文件地址作为参数: public void findFiles(ArrayList list){ HashMap hm
我知道这个问题已经发布并且已经给出了答案,但我的情况不同,因为我在单个方法上填充多个下拉列表,所以如果我点击此链接 After every postback dropdownlist items re
我正在尝试为我的日历应用程序实现重复模式。我希望它的工作方式与 Outlook 在您设置重复约会时的工作方式相同。 public async Task> ApplyReccurrencePeriod
我有一个利用 cookie 来支持准向导的应用程序(即,它是一组相互导航的页面,它们必须以特定顺序出现以进行注册)。 加载 Logon.aspx 页面时 - 默认页面 - 浏览器 cookie 看起来
我有 3 个输入,代码检查它们是否为空,如果为空,则将变量值添加到输入中。 所以我有 3 个具有值的变量: var input1text = "something here"; var input2t
根据数组的长度更改数组的每个元素的最佳方法是什么? 例如: User #1 input = "XYZVC" Expected Output = "BLABL" User #2 input = "XYZ
我在让 Algolia 正常工作时遇到了一些麻烦。我正在使用 NodeJS 并尝试在我的数据库和 Algolia 之间进行一些同步,但由于某种原因似乎随机弹出大量重复项。 如您所见,在某些情况下,会弹
遵循以下规则: expr: '(' expr ')' #exprExpr | expr ( AND expr )+ #exprAnd | expr ( OR expr )+ #exprO
我有一个布局,我想从左边进入并停留几秒钟,然后我希望它从右边离开。为此,我编写了以下代码: 这里我在布局中设置数据: private void loadDoctor(int doctorsInTheL
我是一名优秀的程序员,十分优秀!