我正在尝试使用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。 / p>
仅在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)必须通过引用单元格B30中的第一个数字作为参考来移动单元格C31中的值,并搜索以下10个可能的单元格:A35,D35,G35,J35,M35,Q35,A39,D39G39,J39, M39,O39找到该数字(在此示例中,8是单元格D39,而数字2.22将移至单元格D40。
此操作后,单元格B30和C30中都没有内容。
就这样。
答案 0 :(得分:0)
如果下一个单元格已满而不覆盖它,然后将其向下移动,我不确定程序如何将内容从一个单元格向下移动到下一个单元格。
这应该可以帮助您
Cells(irow + 1, icol).Insert Shift:=xlDown
Cells(irow, icol).Copy Cells(irow + 1, icol)
Cells(irow, icol).Clear