Необходимо скопировать и вставить данные из одного листа в заголовки второго столбца, совпадающие в обоих листах, и пропустить одну строку во втором листе, куда вставляются данные.
Я могу успешно перенести данные с помощьюсопоставление заголовков столбцов, но не может выполнить действие по пропуску одной строки на втором листе.
Option explicit
Public ws1 As Worksheet
Public ws2 As Worksheet
Public b As Long
Public c As Long
Public i As Long
Sub pMain()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim j As Long
Dim k As Long
Dim m As Long
Dim lMatch As Long
ThisWorkbook.Activate
Set ws1 = Sheets("Completed or resolved") '*** Worksheet- Completed or resolved-****
Set ws2 = Worksheets("Enter Detailed Updates Here")
m = 1
j = ws1.Cells.Find("*", ws1.Cells(1), xlValues, xlPart, xlByRows, xlPrevious).Row ' finding last row of worksheet-Completed or Resolved
k = ws1.Cells.Find("*", ws1.Cells(1), xlValues, xlPart, xlByColumns, xlPrevious).Column ' finding last columns of worksheet-Completed or Resolved
For i = 1 To k
lMatch = pMatch(ws2.Cells(1, i), ws1.Rows(1))
If lMatch <> 0 Then
ws1.Activate
'ws1.Cells(i, lMatch).Copy
ws1.Range(Cells(2, lMatch), Cells(j, lMatch)).Copy
ws2.Activate
Call fnRMatch
'ws2.Cells(2, i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ws2.Cells(2, i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ElseIf lMatch = 0 Then
End If
Next i
Application.CutCopyMode = False
MsgBox "Database Saved", vbOKCancel
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Function pMatch(vValue As Variant, _
vArray As Variant) As Long
Dim ret As Long
On Error Resume Next
ret = WorksheetFunction.Match(CDbl(vValue), vArray, 0)
If ret = 0 Then ret = WorksheetFunction.Match(CStr(vValue), vArray, 0)
pMatch = ret
End Function
Function fnRMatch()
'finding last row of worksheet - Enter detailed updates here
b = ws2.Cells.Find("*", ws2.Cells(1), xlValues, xlPart, xlByRows, xlPrevious).Row
End Function
Function fnCMatch()
'finding last column of worksheet - Enter detailed updates here
c = ws2.Cells.Find("*", ws2.Cells(1), xlValues, xlPart, xlByColumns, xlPrevious).Column
End Function
В настоящее время данные вставляются для всего диапазона, но не могут пропустить пустые строки во втором листе.