【发布时间】:2018-04-10 15:35:19
【问题描述】:
我的情况是,我有 5 列,A -> E。A 列填充了序列号,但也填充了很多“绒毛”,B 列填充了相应的日期。还有重复的序列号,但只有一个填充了相应的日期,重复的序列号有空白列 B,这就是我知道它是否重复的方式。 C & D 列充满了“绒毛”,E 的大部分也是如此。E 列的重要之处在于它包含每个序列号和日期与什么水果相关。难点在于水果的种类在第一个序号前几行,但也在E列。这个距离不是固定的,每个水果下的序号数量也不是固定的。有点像这样
Apples
12012
12012 01 May 17 fluff
Fluff fluff
Fluff
12345 02 May 17 fluff
*文本实际上并没有说绒毛,只是胡言乱语。
我的目标是将信息粘贴到“帮助页面”上,用于显示数据的绘图。在“帮助页面”上,第 1 行是水果类型,第 2 行 A 列是序列号,B 列是相关日期。数据将粘贴在其各自的标题下,即 A 列下的序列号。
我尝试使用以下代码:
Sub Fruits()
Dim Helper As Worksheet
Dim Fruits As Worksheet
Set Fruits = Sheets("Fruit page")
Set Helper = Sheets("Helper Page")
'this refreshes the helper page
Helper.Range("A3:z11000").ClearContents
With Worksheets("Fruit Page”)
' this next section of the code is responsible for finding the aircraft number that the Fruits is attached to. We know that it will be the most
' previous number in column E to the respective Fruit.
' if Apples
For i = 2 To Range("A1", Range("A1").End(xlDown)).Rows.Count
‘ Search for any text that starts with GRE or RE and also see if column B is blank
If (Fruits.Cells(i, 1).Value = "Gre*" Or Fruits.Cells(i, 1).Value = "Re*") And Fruits.Cells(i, 2).Value = "<>" Then
‘msgbox (“hey”)
' Find Fruit
If Range(E1, "E" & i).Find(what:="Apple", searchorder:=xlByRows, searchdirection:=xlPrevious).Row Then
' copy cells from column A and B and Paste in Apple heading on Helper Page Sheet in the next blank row
Helper.Range("A3:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value = Fruits.Range("A" & i & ":B" & i).Value
End If
End If
Next
End With
End Sub
我对 VBA 比较陌生,但我不明白为什么这不起作用。我使用了一个 msgbox,它似乎在第一个 if 语句之后不起作用。任何帮助将不胜感激。提前谢谢你。
【问题讨论】:
-
您能提供一些具有预期输出的数据吗?我不清楚上述逻辑。
-
Sure thinng 可以说,我们在上表中有一个,在序列号之前(但在同一列中,但在原始编号之前)我们添加 Gre 或 Re 来表示它是什么苹果颜色.然后,一旦代码运行,在另一张表(帮助程序)上,A 列包含符合我在 If 语句中的要求的所有序列号。 B 列包含苹果各自序列号的日期。我们实际上并不知道这些序列号是否真的与苹果有关,因此我们必须检查每个序列号的“标题”(在 E 列中)。