1

我是 VBA 新手,但我花了很多时间寻找一些代码来帮助解决我的情况,如下所示:

为简单起见,我将通过一个示例说明我要完成的工作:

假设我有一堆具有唯一编号的弹珠,我想将它们放入编号的类别中。

例如:

在“时间'1.0'”“大理石'1'”被“分类”到“组'1'”   
在“时间'2.0'”“大理石'2'”被“分类”到“组'2'”等。
在“时间'3.0'”“大理石'1'”被“分类”到“组'3'”

因此在时间 3.0 Marble 1 被归类为第 1 组和第 2 组。

我创建了一个按钮,允许我输入“Marble #”和“Time”,并报告 Marble 是否在给定时间被分类,如果是,是哪个组,如果不是,它是最后一个组。

当 Marble 仅被分类为 1 组时,这工作得很好,但是当出现 Marble 被分类为多个组然后从其中一个组中删除的情况时,即

............在“时间'4.0'”“大理石'1'”是“组'1'”中的“未分类”

我有限的代码会删除任何分类记录,并简单地将最近的分类报告为“它所在的最后一个分类”,即

大理石 # = 1,时间 = 5.0 结果 = “未分类” 最后一个类别 = “组 '1'” 实际上它仍然“分类”为“组 '2'”。

总之,我需要一个代码,允许我输入“Marble #”和“Time”,并告诉我在那个特定时间“Marble”是否是“Categorized”,如果是,它是哪个“Group”“Categorized”到,如果不是,那么它被“分类”到的最后一个“组”是什么。

我在下面发布了我的代码。. 请记住,这是我的第一个 VBA 代码,它是通过 Google 搜索和反复试验一起被科学怪人发现的。. . * (注意单元格(15,8)和单元格(18,8)分别是“输入大理石编号”和“输入时间”) *(第 1、2、3、4 列是大理石编号、分类、组编号和时间分别)* *

私有子 CommandButton2_Click()
Dim 分类为字符串、i 为整数、分组为整数

Count = Application.CountA(Range("A:A"))

对于 i = 1 计数

    如果 Cells (i, 1).Value = Cells(15, 8) And Cells (i, 4).Value <= Cells (18, 8) And Cells (i, 2) = "CATEGORIZE" Then Categorized = "CATEGORIZED"

    如果 Cells (i, 1).Value = Cells(15, 8) And Cells (i, 4).Value <= Cells (18, 8) And Cells (i, 2) = "UNCATEGORIZE" Then Categorized = "NOT CATEGORIZED "

    如果 Cells (i, 1).Value = Cells(15, 8) And Cells (i, 4).Value <= Cells (18, 8) And Cells (i, 2) = "CATEGORIZE" Then Group = Cells(i , 3)

接下来我

    If Categorized = "CATEGORIZED" Then MsgBox Categorized & " Categorized to " & Group
    If Categorized = "NOT CATEGORIZED" Then Msgbox Categorized & " 最后分类到 " & Group
    If Categorized = "" Then Msgbox "Marble does not exist before this time"

结束子

此外,在不同时间有多个重复条目,即

在“时间'1.0'”“大理石'1'”被“分类”到“组'1'”
在“时间'1.1'”“大理石'1'”被“分类”到“组'1'”
在“时间'1.4'”“大理石'1'”被“分类”到“组'1'”

重复的 "Categorizations" 的数量与我无关,它是 "Categorized" 或 "UnCategorized" 。. . (无论您按“开”按钮多少次,如果您按“关”按钮,灯就会熄灭 :))

非常感谢您的帮助。请保持建设性的批评,因为我已经提到这是我的第一个 VBA 代码。谢谢你。

4

0 回答 0