vba sub用于粘贴行到最后一个空行或基于列标识符更新

时间:2015-03-10 12:31:43

标签: excel vba excel-vba return-value lookup-tables

问: 我需要根据我的判断(按钮)简单地粘贴行的值,以便它们永久保留在我粘贴的位置。如果它们已经存在,那么请更新它们粘贴到最后一个非空行。从他们复制的地方可以更改行,新行可以来去,因此他们需要列中的唯一标识符

我对构建块执行此操作的唯一公式是:

Function paste() As Variant
macropastec4 = Sheets("Sheet1").Range("I3").Value
End Function

我可以指定一个按钮来粘贴一个单元格的值但是我需要行等等(查看详细说明)所以我不知道正确的解决方案是否会完全融入我的构建块!

详细说明:

如何根据该行中的单元格值(唯一标识符)调整此公式以粘贴一行单元格。即在1中的A1行中加入一个唯一引用,这样如果我再次运行sub,它将只更新从H10开始的行,其中已经复制了{ {1}}包含引用H10的内容。如果是新行,则会填充从1H12开始的最后一个空行。我会按下按钮来为要复制的每一行运行vba函数,所以在H11 O1 O2

O3

更复杂的部分在于 A B C D E F G to H I J K L M N 1 "non empty cells containing 2 1 1 b c d e f g 8 previously pasted rows from(A:G) 3 2 2 i j k l m n 9 which have now disappeared" 3 3 p q 5 3 y z 10 1 b c d e f g 11 2 i j k l m n 12 3 p q 5 3 y z A1不会总是包含G1,但是当我将其粘贴到应粘贴的位置时,即行{{1}根据我的规则并由我自行决定(即点击vba子按钮)。 在某个时间完全独立于我为每一行运行sub时,行1,b,c,d,e,f,g将消失并重新填充新的内容。此外,它将重新填充{{1}以下的任何内容。 } H to NA:G,除非A1 to G1A2已经消失,在这种情况下,它会填充剩余的只剩下G2因此为什么我需要唯一标识符是A2中的G2,可以在重新对齐后工作,如果我再次运行该子标识符,则会识别A1 to G11并知道其位置在A1内再次知道仅更新现有行(永久粘贴)或以其他方式(如果是新行存在)将其粘贴到{{1下的最后一个空行}}

- 即新行可以随时移动到顶部或底部1

n.b。我只需要能够粘贴来自2的细胞,或者进一步取决于有多少行,即它可能是H to N,但我希望通过按钮独立地为每一行提供sub to cator。这些行H to N如何重新填充和重新排序自己取决于行中的列。即如果他们有类似的列单元格,他们会重新填充,但在我想要实现的框架中应该忽略它,我只需要引用行A列中的唯一标识符

其他要点

  • 在单元格A:G G1 A1:G3 A2 A1:G20 G2`等(基本上每一行)中,我将有数字,字母(书面文字)和插入引用的组合( LINKS)到Microsoft onenote的工作表。所以我需要能够将相同的链接复制到我对该特定onenote文件的LINK按钮的相同对齐方式,即与单元格对齐等。所以基本上只是粘贴那些单元格中的任何内容!!

  • 值得注意的是,它们的唯一标识符 重新填充不会以任何顺序 - 它们将是完全随机的,即 并非A1:G20可以是A1 to,但它们将是数字

  • 我还需要这个来推荐我正在制作的一张纸。

请帮我完成这个!提前谢谢 不知道这是否有帮助

1 个答案:

答案 0 :(得分:0)

仍然没有想法?这些帮助吗?

代码:

Sub CopyRows()

Dim LastRow As Long
Dim destRng As Range

Application.ScreenUpdating = False

With Sheets("All Data")
Set destRng = .Range("B" & .Cells(.Rows.Count, "B").End(xlUp).Row + 1)

LastRow = Sheets("IDEAS").Range("C" & Rows.Count).End(xlUp).Row
Sheets("IDEAS").Range("B8:S" & LastRow).Copy Destination:=destRng

    .Columns("B:S").AutoFit
End With
Application.ScreenUpdating = True
End Sub

也许我可以为所有行创建一个子按钮来执行此操作。只需要上面的内容来过滤已经存在的带有标识符的行。 :S所以我需要使用if命令的某种形式并粘贴值:S

这个帮助:?

Sheets("Sheet1").Range("A1:F48").Copy
With Sheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With

Use VBA to paste values from one table to another

用粘贴不复制这个? 我可以使用当前显示的唯一标识符

来引用单元格
Public Sub CopyRows() 
Sheets("Sheet1").Select 
' Find the last row of data 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 
' Loop through each row 
For x = 2 To FinalRow 
    ' Decide if to copy based on column D 
    ThisValue = Cells(x, 4).Value 
    If ThisValue = "A" Then 
        Cells(x, 1).Resize(1, 33).Copy 
        Sheets("SheetA").Select 
        NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 
        Cells(NextRow, 1).Select 
        ActiveSheet.Paste 
        Sheets("Sheet1").Select 
    ElseIf ThisValue = "B" Then 
        Cells(x, 1).Resize(1, 33).Copy 
        Sheets("SheetB").Select 
        NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 
        Cells(NextRow, 1).Select 
        ActiveSheet.Paste 
        Sheets("Sheet1").Select 
    End If 
Next x 

End Sub