如何复制和粘贴单元格内容

时间:2018-06-20 16:08:12

标签: find copy move

我正在使用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("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

我在底部有一份Excel电子表格的副本,以帮助进行直观的说明。

1)如果我选择数字4,则可以是任何数字(在单元格A1中),并且程序在单元格G22中找到数字4,我需要将内容1-5移至单元格C10。我还需要删除I22中的内容(因此在此操作之后,单元格H22和I22中将什么都不会保留)。

2)下一步是将所有数字集(例如1-1或7-10)移动到6列位置和范围E1:E12,B16:B31,E16:E31,H16:H31,K16: K31,N16:N31。仅在第一列(E1:E12)中,我需要程序将一组数字(可能在该范围内多个)移动到它下面的下一个单元格中。因此,在位于单元格E1中的3-16的示例中,它将移动到E2,并且集合中的最后一个数字将增加到3-17。当数字组位于单元格E12中时,它们将重新回到E1,但仍会增加最后一个数字(它会不断循环)。

需要下一个单元的帮助,如果下一个单元已满而不覆盖它,那么软件如何将内容从一个单元向下移动到下一个单元,如果有意义的话,如何将其向下移动。一个例子是单元格E12,如果E1已满但必须移动(首先移动),如何将其移动到E1?

对于其余范围(B,E,H,K,N上方),位于其中的数字集在数字集的右侧有一列,其中包含必须随该数字集移动的值。就像在集合中的最后一个数字上方一样(例如,单元格N18,数字5-3将增加一个数字,并在单元格N19中变为5-4,单元格O18将向下移动到O19(在操作N18和O18之后将是这是两个例外,如果最后一个数字是数字集中的15,请参阅单元格B31(8-15)。当15是数字集中的最后一个数字时,我需要程序确定一组数字中的第一个数字数字,在这种情况下为3,并将单元格C31中的值移动到单元格I14(可能有5个单元格,即C14,F14,I14,L14或O14)。另外,当集合中的最后一个数字为15时,我需要程序引用B列的单元格编号B33,E列的单元格编号E33,H列的单元格编号H33,K列的单元格编号K33和N列的编号N33。将被移动到单元格E1,因为单元格B33中的参考号为1。此操作之后,单元格B31和C31中都没有内容。

3)下一步是移动单元格C10中的内容(我叫温度单元格),内容为1-5。我需要程序来引用单元格D1:D12的范围并找到单元格内容的第一个数字(在本例中为1),但是请使用下面的单元格作为放置内容的位置的参考。在这种情况下,单元格D2将作为参考并搜索以下单元格:A16,D16,G16,J16,M16以查找2。 在这种情况下,使用2(单元格D2),正确的单元格将为K16,并使用数字 1-1。一旦它来自单元格C10,集合中的最后一个数字将始终更改为1,因此变为1-1。

最后,谢谢您能提供的任何帮助。

ps。在发布Excel工作表时遇到问题,希望该方法行得通,否则请在下面再次尝试。

0 个答案:

没有答案