Sprawdziłem kilka różnych postów i nie mogę znaleźć dokładnego kodu, którego szukam. Również nigdy wcześniej nie używałam VBA, więc próbuję zabrać kody z innych postów i wprowadzić moje informacje, aby działały. Bez szczęścia. W pracy mamy system płac w Excel. Próbuję wyszukać moje imię i nazwisko "Clarke, Matthew"
, a następnie skopiuj ten wiersz i wklej go do skoroszytu zapisanego na moim komputerze "Total hours"
.Jak skopiować linię w programie Excel za pomocą określonego słowa i wkleić do innego arkusza programu Excel?
Odpowiedz
Po rozwinięciu tego, co timrau powiedział w swoim komentarzu, możesz użyć funkcji AutoFilter, aby znaleźć wiersz z Twoim imieniem i nazwiskiem. (Zauważ, że jestem zakładając, że masz skoroszyt open source)
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
Jak widać umieścić w zastępcze dla konkretnej konfiguracji skoroszycie.
'ActiveSheet.AutoFilter.Range.Offset (1) .Copy' To jest niewłaściwy sposób to zrobić :) Proszę zobaczyć dwa linki, które zamieściłem w komentarzu. –
@ Siddharth Znalazłem, że 'AutoFilter.Range' działa dobrze. 'SpecialCells (xlCellTypeVisible)' również powinien działać, ale miałem problemy z zwracaniem pustych komórek. –
SPRAWDZONA
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
SNAPSHOT
+1 tam jest wiele przypadków krawędzi tutaj nie wszedłem do –
TY dla wszystkich feedback. Próbuję użyć tego drugiego makra, ale teraz otrzymuję komunikat o błędzie w tej linii .AutoFilter Field: = 1, Criteria1: = "= *" & strSearch & "*" .... Mówi mi "Błąd czasu wykonywania 1004: Metoda automatycznego wyszukiwania zakresu zakresu nie powiodła się ". Jakieś sugestie? – user1548751
Co tu ustawić? 'Z .Range (" A1: A "i lRow) '? –
wiem, że to jest stary, ale dla nikogo szukasz jak to zrobić, można to zrobić w znacznie bardziej bezpośrednia moda:
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
- 1. Zapisywanie arkusza kalkulacyjnego programu Excel za pomocą Interop C#
- 2. Dodawanie logo do arkusza Excel za pomocą php excel
- 3. Importowanie danych arkusza kalkulacyjnego Excel do innego arkusza kalkulacyjnego Excel zawierającego VBA
- 4. EPPlus i narzędzie kamery programu Excel
- 5. Zmień nazwę zdarzenia arkusza w programie Excel
- 6. Usuwanie zdjęć za pomocą programu Excel VBA
- 7. Uzyskaj nazwę arkusza programu Excel zawierającego kod
- 8. Jak zmienić kolor tekstu w tej samej komórce arkusza programu Excel za pomocą apache poi?
- 9. Wyjątek NullReferenceException w tworzeniu arkusza programu Excel
- 10. Usuń wszystkie granice określonego arkusza programu Excel za pomocą Apache POI
- 11. Kopiowanie arkusza kalkulacyjnego za pomocą Apache POI
- 12. Próbując zrobić Office Automation w programie Excel 2007, ale wciąż za pomocą programu Excel 2003
- 13. Jak odczytać dane z programu Excel za pomocą z PHPExcel
- 14. Ustawianie właściwości właściwości arkusza kalkulacyjnego programu Excel
- 15. Zmiana koloru komórki arkusza programu Excel za pośrednictwem VB.NET
- 16. Ukrywanie arkusza programu Excel z VBA
- 17. Eksportowanie programu Excel do arkusza kalkulacyjnego XML z pustymi komórkami
- 18. Eksportuj tabelę HTML do programu Excel za pomocą programu ASP.NET
- 19. Drukowanie programu Excel za pomocą Interop
- 20. Edytowanie arkuszy programu Excel za pomocą Pythona
- 21. Uzyskiwanie pierwszego arkusza z dokumentu programu Excel bez względu na nazwę arkusza za pomocą OleDb
- 22. Tworzenie plików programu Excel za pomocą C#
- 23. Jak zmodyfikować istniejący skoroszyt programu Excel za pomocą języka Perl?
- 24. Jak uzyskać OpenXML do schowka, aby wkleić go do programu Excel?
- 25. Excel VBA - usuwanie treści ciągu do * słowa *
- 26. Skopiuj dane R data.frame do arkusza kalkulacyjnego Excel
- 27. Otwieranie dokumentu Excel za pomocą programu EPPlus
- 28. Jak znaleźć wiersz początkowy i końcowy scalonych komórek w programie Excel za pomocą programu VBSCript?
- 29. Jak zapisać/zastąpić istniejący plik programu Excel za pomocą programu Excel Interop - C#
- 30. jak odczytać komentarze arkusza programu excel w C#
Jeśli szukasz słowa kluczowego w pojedynczej kolumnie (na przykład wszystkie "' Clarke, Matthew' "są w kolumnie A), to funkcja filtrująca programu Excel powinna działać. – timrau
Być może opublikowanie tego, co masz, da nam lepsze miejsce, aby zacząć pomagać. Możesz również zajrzeć do funkcji 'VLOOKUP'. –
Zobacz ten http://stackoverflow.com/questions/10319096/error-when-i-use-specialcells-of-autofilter-to-get-visible-cells-in-vba/10319230#10319230 zmodyfikuj go odpowiednio do swoich potrzeb :) –