如何在VBA中进行单元复制 - 粘贴和值替换?

时间:2014-02-21 13:49:17

标签: excel vba excel-vba

我有一个有2列的表。

A B

A2 B2 nn

A3 B3 nn

.....

An Bn nn

我需要复制B2单元格的内容并将其粘贴到所有其他B列单元格中,其中A列具有值。 然后在B列中找到某个值(nn)并用A列值替换它。 为了复制B2内容,我这样做:

Sub CopyTest()

    'ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select

    Range("B3:B1048576").Select
    Selection.ClearContents

    Range("B2").Copy
    Range("B2:B7").PasteSpecial (xlPasteAll)

Application.CutCopyMode = False

End Sub

1.问题是我不知道如何粘贴到某个单元格(B7),但是对于所有表格(直到A列包含值)。

类似的问题我用某个B列的值替换某个B列值。

Sub ReplaceExample()

    Dim OriginalText As String
    Dim CorrectedText As String

    OriginalText = Range("B2").Value
    CorrectedText = Replace(OriginalText, "E_ONBAL", Range("A2").Value)
    Range("B2").Offset(, 1).Value = CorrectedText



End Sub

2.如何对所有A列执行相同的操作,以便进行一种循环?

谢谢!

2 个答案:

答案 0 :(得分:0)

第一部分是管理的,所以我发布了答案,以防它对某人有用:

Sub CopyTest()

    Range("B3:B1048576").Select
    Selection.ClearContents

Set currentsheet = ThisWorkbook.Worksheets("Sheet1")
    LastRow = currentsheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

    Range("B2").Copy
    Range("B3" & ":" & "B" & LastRow).PasteSpecial (xlPasteAll)

Application.CutCopyMode = False

End Sub

我仍然没有管理如何使用替换来修改脚本的第二部分,以便对所有A列执行相同的操作,所以要做一种循环。

答案 1 :(得分:0)

此示例如何从活动表复制到另一张表。

Sub Test1()

Dim SuccessSheet As String
Application.ScreenUpdating = False
SuccessSheet = ActiveSheet.Name

WS_Count = ActiveWorkbook.Worksheets.Count


' Generate new sheet if it does not exist
If Not sheetExists(SuccessSheet & " Log") Then
    Set WS = Sheets.Add(After:=Worksheets(WS_Count))
    Worksheets(SuccessSheet).Columns(2).Copy Destination:=Worksheets(WS.Name).Columns(2)
    Worksheets(SuccessSheet).Columns(4).Copy Destination:=Worksheets(WS.Name).Columns(1)

WS.Name = SuccessSheet & " Log"

End if

Application.ScreenUpdating = True
End Sub