Как скопировать данные из одного листа в другой в определенную строку - PullRequest
0 голосов
/ 21 февраля 2019

Всем, спасибо за ваше время заранее.

у нас уже есть рабочий код для перемещения данных с одного wrksht на другой с vb в excel.

мы используем:

Set lastrow = Sheets ("SR log").Cells(Rows.Count, 1).End(x1UP)
    With LastRow

Это помещает выбранные нами данные в последнюю открытую строку листа 2

Возможно ли вместо последней строки найти ссылочный номер из первого листа, который уже находится на второмлист, скажем, Cell G3.используйте информацию из первого листа в ячейке g3 и найдите ее на втором листе.

Как только эта строка будет найдена (данные G3 с первого листа будут в столбце A второго листа)

Теперь примените данные к этой строке, где это применимо.

любая помощь будет оценена.

2/22/19

Вот мой ответ.

Спасибо, что нашли время

Я собрал кое-что вместено хотел запустить его до выполнения

[code]

 Private Sub CommandButton2_Click()




    Workbooks.Open Filename:="G:\General\COVER  SHEET_Protective\Protective     Packaging Order Log.xlsm", Password:="PP", WriteResPassword:="PP"





   Dim FoundRow As Variant
   FoundRow = Application.Match(Sheets(1).Range("G3"), Sheets(2).Columns(1), 0)
    If IsNumeric(FoundRow) Then
    With FoundRow
        ' found, use FoundRow like LastRow before
    End With
   Else
    ' not found :(
    End If



 .Offset(1).Font.Size = 14

                .Offset(1, 9) = ws.[I10]
                .Offset(1, 10) = ws.[I11]

     End Sub

[/ code]

Я немного не уверен насчет этой строки

[code]

 Application.Match(Sheets(1).Range("G3"), Sheets(2).Columns(1), 0)

[/ code]

таблицы соответствия 1 в первой рабочей книге называются рабочей таблицей

, а во второй рабочей книге, где выполняется поискпроисходит в первом столбце листа называется orderlog

спасибо

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете найти соответствующую строку с Application.Match:

Private Sub CommandButton2_Click()
    Dim wb1 As Workbook         ' first workbook
    Dim wb2 As Workbook         ' second workbook
    Dim wsCheck As Worksheet    ' sheet in the first workbook
    Dim wsOrderlog As Worksheet ' sheet in the second workbook

    ' address the first workbook and its sheet
    ' if this VBA-code is in the frist workbook, it's "ThisWorkbook"
    Set wb1 = ThisWorkbook
    Set wsCheck = wb1.Worksheets("Worksheet")

    ' check, if second workbook is already open
    For Each wb2 In Workbooks
        If wb2.Name = "Protective Packaging Order Log.xlsm" Then Exit For
    Next wb2

    ' if not already open, then open it, and address its sheet also
    If wb2 Is Nothing Then
        Set wb2 = Workbooks.Open( _
            Filename:="G:\General\COVERSHEET_Protective\Protective Packaging Order Log.xlsm", _
            Password:="PP", _
            WriteResPassword:="PP")
    End If
    Set wsOrderlog = wb2.Worksheets("orderlog")

    ' search a value from the first workbook's sheet within second workbook's sheet
    Dim FoundRow As Variant
    FoundRow = Application.Match(wsCheck.Range("G3").Value, wsOrderlog.Range("A:A"), 0)
    If IsNumeric(FoundRow) Then ' if found
        ' please adapt to your needs:
        wsOrderlog.Cells(FoundRow, 1).Font.Size = 14
        wsOrderlog.Cells(FoundRow, 9).Value = wsCheck.Range("I10").Value
        wsOrderlog.Cells(FoundRow, 10).Value = wsCheck.Range("I11").Value
    Else
        MsgBox "Sorry, the value in cell G3" & vbLf & _
            wsCheck.Range("G3").Value & vbLf & _
            "could not be found in orderlog column A."
    End If

    ' close the second workbook (Excel will ask, if to save)
    wb2.Close
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...