【发布时间】:2018-07-04 20:39:53
【问题描述】:
我正在尝试使用 VBA 开发一个小程序,并想添加它。与往常一样,我一直在努力让它正确,任何人都可以在这个项目上使用一些帮助。我不确定如果下一个单元格已满而不覆盖它,程序如何将内容从一个单元格向下移动到下一个单元格,然后将其向下移动。 我希望你能帮忙。
我目前正在使用下面的程序。
Sub do_it()
Dim n, sht As Worksheet, cell As Range, num, tmp, rngDest As Range
Set sht = ActiveSheet
n = sht.Range("A1")
For Each cell In sht.Range("D1:D12,A16:A31,D16:D31,G16:G31,J16:J31,M16:M31").Cells
tmp = cell.Offset(0, 1).Value
If cell.Value = n And tmp Like "*#-#*" Then
'get the first number
num = CLng(Trim(Split(tmp, "-")(0)))
Debug.Print "Found a positive result in " & cell.Address
'find the next empty cell in the appropriate row
Set rngDest = sht.Cells(num, sht.Columns.Count).End(xlToLeft).Offset(0, 1)
'make sure not to add before col L
If rngDest.Column < 12 Then Set rngDest = sht.Cells(num, 12)
cell.Offset(0, 1).Copy rngDest
Exit For
End If
Next
End Sub
我正在尝试让程序在 6 列范围 E1:E12,B16:B30,E16:E30,H16:H30,K16:K30,N16:N30 的列中移动所有数字集。
仅在 E1:E12 列中,我需要程序将一组数字(范围内可能不止一组数字)向下移动到其下方的以下单元格并增加该组中的最后一个数字(无限制到计数)。因此,在单元格 E1 (8-16) 的示例中,将移动到 E2 并变为 8-17(移动后单元格 E1 将为空白)。 当数字组位于单元格 E12 中时,它们会移动到 E1,但仍会增加最后一个数字,并且会循环往复。下一个需要帮助,如果下一个单元格已满而不覆盖它,程序如何将内容从一个单元格向下移动到下一个单元格,然后将其向下移动,如果这有意义的话。一个例子是单元格 E12,如果 E1 已满但必须移动,它如何移动到 E1,先移动?
对于其余列范围 B16:B30,E16:E30,H16:H30,K16:K30,N16:N30 我需要程序来移动数字集(范围内可能不止一组数字)向下到它下面的单元格并增加集合中的最后一个数字(不限制计数)。因此,在单元格 N18 (5-3) 的示例中,它将移动到 N19 并变为 5-4(完成后删除 N18 中的内容)。上面右侧的第二个相邻列,在这种情况下为 N18,仅位于以下位置:C16:C30,F16:F30,I16:I30,L16:L30,O16:O30 的单元格包含必须移动的值但数量没有变化。单元格 O18 将向下移动到 O19 并且仍然具有 9.99 的数量。操作后 N18 和 O18 将变为空白)。
如果最后一个数字是 15,则有两个例外,请参见单元格 B30 (8-15)。必须发生两件事:
1) 我需要程序引用以下 5 个可能的单元格中的数字:
Cell B30 go to cell B32, reference number 1
Cell E30 go to cell E32, reference number 2
Cell H30 go to cell H32, reference number 3
Cell K30 go to cell K32, reference number 4
Cell N30 go to cell N32, reference number 5
使用示例 B30,参考编号为 1 (B32),因此程序将在 D1:D12 列中搜索数字 1 并移动数字集并增加最后一位数字,因此它将变为 8-16单元格编号 E1。
2) 单元格 C31 中的值必须通过引用单元格 B30 中的第一个数字作为参考来移动,并搜索以下 10 个可能的单元格:A35,D35,G35,J35,M35,Q35,A39,D39G39,J39, M39,O39 找到该数字(在本例中,8 将是单元格 D39,数字 2.22 将移动到单元格 D40。
此操作后,单元格 B30 和 C30 中都没有内容。
就是这样。
【问题讨论】:
-
TLDR TLDR
-
这里有很多信息。此外,您告诉我们单元格
K1在第 1 行,这完全没有必要。请edit您的问题。解释 1 个具体问题,您尝试过的内容,并陈述一个实际问题。并不是说“你能帮帮我”不是问题 :) 祝你好运 -
我已经解决了我的请求,谢谢 Russ