- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 VBA 代码有问题,我尝试在累积 B 和 C 列的值的同时消除报销列表的重复项,但这是有条件的,我的意思是消除重复项是强制性的A列和H列与重复行的值A和H相同,因此需要有两个条件才能删除重复项,谢谢您的帮助
这是我之前构建的代码,但它给了我“需要对象”错误
excel table of the vba code
Sub Bouton1_Cliquer()
Dim Cel As Range
Dim Cel1 As Range
Dim Plage As Range
Dim Plage1 As Range
Dim Col As New Collection
Dim col1 As New Collection
Dim Cumul As Double
Dim Cumul1 As Double
Dim DerLig As Long, i As Long, j As Long, MémoL As Long, p As Long
Dim PremL As Boolean
Dim CodeADELI As String
Application.ScreenUpdating = False
Set Col = New Collection
Set col1 = New Collection
On Error Resume Next
With Worksheets("Feuil1") 'Nom de feuille à adapter
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
DerLig1 = .Range("H" & .Rows.Count).End(xlUp).Row
'Les Codes ADELI sont placés dans une collection afin d'obtenir une liste sans doublon
Set Plage = .Range("A2:A" & DerLig)
Set Plage1 = .Range("H2:H" & DerLig1)
For Each Cel In Plage
If Cel <> "" Then Col.Add Cel, CStr(Cel)
Next Cel
For Each Cel1 In Plage1
If Cel1 <> "" Then col1.Add Cel1, CStr(Cel1)
Next Cel1
On Error GoTo 0
'On boucle sur chaque élément de la collection que l'on compare aux codes de la liste.
For i = 1 To Col.Count
For p = 1 To col1.Count
Cumul1 = 0
Cumul = 0 'Initialisation du total
MémoL = 0
PremL = True
CodeADELI = Col(i)
INSEE = col1(p)
'chaque élément de la collection est comparé aux codes de la liste.
For j = DerLig To 2 Step -1
If .Range("A" & j).Value = CodeADELI And .Range("H" & j).Value = INSEE Then
'On ajoute le montant au cumul
Cumul = Cumul + .Range("B" & j).Value
Cumul1 = Cumul1 + .Range("C" & j).Value
'S'il s'agit de la première ligne , on mémorise le numéro de ligne
If PremL Then
MémoL = j
PremL = False
'Sinon, on supprime la ligne (doublon)
Else
.Rows(j).Delete
MémoL = MémoL - 1
DerLig = DerLig - 1
DerLig1 = DerLig
End If
End If
Next j
'Le cumul est affecté au montant de la ligne qui reste
If MémoL > 0 Then .Range("C" & MémoL) = Cumul1
If MémoL > 0 Then .Range("B" & MémoL) = Cumul
Next p
Next i
End With
End Sub
最佳答案
您的问题可以通过更改线路来解决
If Cel <> "" Then Col.Add Cel, CStr(Cel)
If Cel1 <> "" Then col1.Add Cel1, CStr(Cel1)
If Cel <> "" Then Col.Add CStr(Cel), CStr(Cel)
If Cel1 <> "" Then col1.Add Cstr(Cel1), CStr(Cel1)
col(i)
引起的。和
col1(p)
,该集合引用了一个范围对象,该对象已被
.Rows(j).Delete
的代码行删除。 .
Dictionary
, 或者只是一个动态尺寸的
String
数组,可能是跟踪您希望匹配哪些“键”的更好方法。
Sub Bouton1_Cliquer()
Dim dict As Dictionary
Dim key As Variant
Dim Cumul As Double
Dim Cumul1 As Double
Dim DerLig As Long, i As Long, j As Long, MémoL As Long
Dim PremL As Boolean
Application.ScreenUpdating = False
Set dict = New Dictionary
With Worksheets("Feuil1") 'Nom de feuille à adapter
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 2 To DerLig
If Not dict.Exists(.Cells(i, "A") & "|" & .Cells(i, "H")) Then
dict.Add .Cells(i, "A") & "|" & .Cells(i, "H"), .Cells(i, "A") & "|" & .Cells(i, "H")
End If
Next
For Each key In dict.Keys
Cumul1 = 0
Cumul = 0 'Initialisation du total
MémoL = 0
PremL = True
'chaque élément de la collection est comparé aux codes de la liste.
For j = DerLig To 2 Step -1
If key = .Cells(j, "A").Value & "|" & .Cells(j, "H").Value Then
'On ajoute le montant au cumul
Cumul = Cumul + .Range("B" & j).Value
Cumul1 = Cumul1 + .Range("C" & j).Value
'S'il s'agit de la première ligne , on mémorise le numéro de ligne
If PremL Then
MémoL = j
PremL = False
'Sinon, on supprime la ligne (doublon)
Else
.Rows(j).Delete
MémoL = MémoL - 1
DerLig = DerLig - 1
End If
End If
Next j
'Le cumul est affecté au montant de la ligne qui reste
If MémoL > 0 Then .Range("C" & MémoL) = Cumul1
If MémoL > 0 Then .Range("B" & MémoL) = Cumul
Next
End With
End Sub
关于vba - "Object Required"集合错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466342/
编辑:我似乎问错了这个问题。 我正在尝试寻找一种方法来查询一个集合是否在另一个集合中可用。例如: SELECT * FROM something WHERE (1, 3) IN (1, 2, 3, 4
这两种方法似乎 produce the same results ,但我一直很难真正说服人们第二种方法有效,因为它显然并不为人所知。 // Create some data var foo = { '
我一直在学习Kotlin,并且遇到过Collections API。在Kotlin之前,我一直在学习Java,并且我知道Java中有很多不同类型的Collections API。例如,我们使用List
为什么我会得到不同的行为: Collection col2 = new ArrayList(col); 集合 col2 = new ArrayList(); col2.addAll(col) 我正在与
所以我有一个代表专辑信息的 JSON 对象。给定“function updateRecords(id, prop, value)”我希望能够更新每个条目。正确的完成代码如下。 我得到了指示,粗体部分,
我想存储一个对象集合,这些对象根据它们所代表的值进行键控。这些键可以重复。例如: [4] => Bob [5] => Mary [5] => Sue [9] => Steve [10] =>
在检查 ArrayList API 时,我注意到一些看起来很奇怪的东西。 确实,这里是 ArrayList 构造函数实现,其中 Collection 作为参数传递: public ArrayList(
我正在为 API 编写一个 swagger 定义文件。 API 是用于 GET 请求的 /path/to/my/api: get: summary: My Custom API d
我知道scala.collection包中有两个非常有用的对象,可以帮助我们实现这个目标: JavaConverters(如果我想明确说明并准确说明我要转换的内容) JavaConversions(如
我已经阅读了无数其他帖子,但似乎无法弄清楚发生了什么,所以是时候寻求帮助了。 我正在尝试将包含集合的域实体映射到也包含集合的 dtos。 这是一个原始示例; (我提前为代码墙道歉,我尽量保持简短):
我正在创建一个具有 ArrayList 的类,因此当我调用构造函数时,它会初始化该数组: public class ElementsList { private ArrayList list;
我正在阅读事件指南和指南的开头,它说: You can also add an event listener to any element in the this.$ collection using
我是 Python 新手,想知道如何使用键在字典中存储不同数据类型的列表 例如 - {[Key1,int1,int1,String1] , [Key2,int2,int2,String2], [Key
int[] mylist = { 2, 4, 5 }; IEnumerable list1 = mylist; list1.ToList().Add(1); // why 1 does not get
我在 UI 表单中的每一行之后将以下内容添加到 HashMap 集合中 声明 Map> map = new HashMap>(); List valSetOne = new ArrayList();
我正在开发我的第一个 Java 项目,我有一个问题。问题应该很简单(虽然代码不是那么短,但没有理由被吓倒:))。我创建了一个基本的角色扮演游戏,并且有一个定义每个角色的抽象类“Character”。在
我正在开发一款应用程序,可以为用户收集推文、Facebook 状态和 Facebook 照片。目前,用户确切地设定了他们希望这种收获发生的时间和时间,并且蜘蛛会在此期间拉取数据。 when 和 to
有谁知道在 C# 中是否有与 Java 的 Set 集合等效的好方法?我知道您可以通过填充但忽略值来使用 Dictionary 或 HashTable 在某种程度上模仿集合,但这不是一种非常优雅的方式
EXISTS 该函数返回 集合中第一个元素的索引,如果集合为空,返回NULLNULLNULL Collecti
RDF集合是通过属性 rdf:parseType="Collection" 来描述仅包含指定成员的组 rdf:parseType="Collection" 属
我是一名优秀的程序员,十分优秀!