valores una según salga que puedo poner pegar pasar para otra numero nombre lista jalar informacion hoja hacer extrae enlazar datos copiar condición condicion con como columna celda cambiar excel excel-vba

según - ¿Cómo copiar una línea en Excel usando una palabra específica y pegarla en otra hoja de Excel?



formula para jalar informacion de una hoja de excel a otra (3)

He revisado varias publicaciones diferentes y parece que no puedo encontrar el código exacto que estoy buscando. Además, nunca antes había usado VBA, así que estoy tratando de tomar códigos de otras publicaciones y de ingresar mi información para que funcione. Sin suerte todavía. En el trabajo, tenemos un sistema de nómina en Excel . Intento buscar mi nombre "Clarke, Matthew" y luego copiar esa fila y pegarla en el libro de trabajo que he guardado en mi escritorio "Total hours" .


Al expandir lo que dice timrau en su comentario, puede usar la función Autofiltro para encontrar la fila con su nombre. (Tenga en cuenta que supongo que tiene abierto el libro de trabajo de origen)

Dim curBook As Workbook Dim targetBook As Workbook Dim curSheet As Worksheet Dim targetSheet As Worksheet Dim lastRow As Integer Set curBook = ActiveWorkbook Set curSheet = curBook.Worksheets("yourSheetName") ''change the Field number to the correct column curSheet.Cells.AutoFilter Field:=1, Criteria1:="Clarke, Matthew" ''The Offset is to remove the header row from the copy curSheet.AutoFilter.Range.Offset(1).Copy curSheet.ShowAllData Set targetBook = Application.Workbooks.Open "PathTo Total Hours" Set targetSheet = targetBook.WorkSheet("DestinationSheet") lastRow = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row targetSheet.Cells(lastRow + 1, 1).PasteSpecial targetBook.Save targetBook.Close

Como puede ver, coloque marcadores de posición para la configuración específica de su libro de trabajo.


TRATADO Y PROBADO

Sub Sample() Dim wb1 As Workbook, wb2 As Workbook Dim ws1 As Worksheet, ws2 As Worksheet Dim copyFrom As Range Dim lRow As Long ''<~~ Not Integer. Might give you error in higher versions of excel Dim strSearch As String Set wb1 = ThisWorkbook Set ws1 = wb1.Worksheets("yourSheetName") strSearch = "Clarke, Matthew" With ws1 ''~~> Remove any filters .AutoFilterMode = False ''~~> I am assuming that the names are in Col A ''~~> if not then change A below to whatever column letter lRow = .Range("A" & .Rows.Count).End(xlUp).Row With .Range("A1:A" & lRow) .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow End With ''~~> Remove any filters .AutoFilterMode = False End With ''~~> Destination File Set wb2 = Application.Workbooks.Open("C:/Sample.xlsx") Set ws2 = wb2.Worksheets("Sheet1") With ws2 If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else lRow = 1 End If copyFrom.Copy .Rows(lRow) End With wb2.Save wb2.Close End Sub

INSTANTÁNEA


Sé que esto es antiguo, pero para cualquier persona que busque cómo hacerlo, se puede hacer de una manera mucho más directa:

Public Sub ExportRow() Dim v Const KEY = "Clarke, Matthew" Const WS = "Sheet1" Const OUTPUT = "c:/totalhours.xlsx" Const OUTPUT_WS = "Sheet1" v = ThisWorkbook.Sheets(WS).Evaluate("index(a:xfd,match(""" & KEY & """,a:a,),)") With Workbooks.Open(OUTPUT).Sheets(OUTPUT_WS) .[1:1].Offset(.[counta(a:a)]) = v .Parent.Save: .Parent.Close End With End Sub