Есть ли лучший способ поиска столбца с столбцом и скопировать смещение на другой лист? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу найти столбец Y Sheet2 с столбцом X Sheet1.values когда совпадение найдено, значение из следующего столбца на листе 2 (z) копируется в столбец листа 1 Y

Как видите, я не лучший программист.

Стандарт Excel.

  Sub searchingit()

  Dim rowNum As Integer
  Dim countOf As Integer
  DO
  DoEvents
  rowNum = rowNum + 1
  dudetoFind = Sheets("Sheet1").Range("X" & rowNum).Value
  wheretoFind = Sheets("Sheet2").Range("Y:Y").Value

  If dudetoFind.Value = wheretoFind.Value Then

  wheretoFind.Offset(0, 1).Copy
  wheretoFind = Sheets("Sheet1").Range("Y" + rowNum)
  countOf = countOf + 1
  End If

  Loop Until countOf = 2911


  End Sub

Сравните два столбца. Когда совпадение найдено, значение смещения следующего столбца копируется с оригинального листа в пустой столбец X.

1 Ответ

0 голосов
/ 25 апреля 2019

Код VBA:

Option Explicit

Sub test()

    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim position As Range, cell As Range, rng1 As Range, rng2 As Range
    Dim LastRow1 As Long, Lastrow2 As Long

    With ThisWorkbook

        Set ws1 = .Worksheets("Sheet1")
        Set ws2 = .Worksheets("Sheet2")

    End With

    LastRow1 = ws1.Cells(ws1.Rows.Count, "X").End(xlUp).Row
    Lastrow2 = ws2.Cells(ws2.Rows.Count, "Y").End(xlUp).Row

    Set rng1 = ws1.Range(ws1.Cells(1, 24), ws1.Cells(LastRow1, 24))
    Set rng2 = ws2.Range(ws2.Cells(1, 25), ws2.Cells(Lastrow2, 25))

    For Each cell In rng1

        Set position = rng2.Find(cell, LookIn:=xlValues, lookat:=xlWhole)

        If position Is Nothing Then
            Debug.Print "Name was not found."
        Else
            ws1.Range("Y" & cell.Row).Value = ws2.Range("Z" & position.Row).Value
        End If

    Next cell

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...