Mam ten arkusz roboczy, który zawiera kolumny „kod, operacja, tytuł, data, nazwa, opis, status”. Format jest ogólnie.
code:4566, 4899, 4987, 4988, 4989
operation:X,Y,Z,X,Y
title:XX,YY,ZZ,RR,XXY
date: (the date column is not blank)
name:Adam,Edward,Adam,Kris,Chris
description: (some rows has data for this column, some are blank)
status: active, inactive, closed
Próbuję skopiować wiersze, których kolumna „nazwa” ma „Adam” lub „Edward” ORAZ kolumna „status” z „aktywnym” do nowego arkusza zawierającego kod kolumny, tytuł, datę, nazwę, opis, status „tylko”. (Nie chcę kolumny „operacja” w nowym arkuszu)
w tym momencie nie mam nic przeciwko, jeśli niektóre z moich komórek opisu w wierszach są puste. Nadal chcę tego w wynikach.
na koniec zwracane byłyby tylko 2 wiersze: 4566 i 4987
Mógłbym to zrobić ręcznie. Ale chcę spróbować, czy można to zrobić za pomocą jednego kliknięcia (proces automatyzacji)
Dziękuję Ci.
P / S: przepraszam, że nie włączyłem tego, co mam na teraz, oto jest
Options Explicit
Sub Button1_Click()
Dim myRow As Long 'for finding last row
Dim xlast As Integer 'x is the last row
Dim sht As Worksheet 'original sheet
Dim newsht As Worksheet 'sheet with new data
Set sht = ThisWorkbook.Worksheets("Sheet1")
Set newsht = ThisWorkbook.Worksheets("Sheet2")
myCol = code
xlast = sht.Cells(Rows.Count, myCol).End(xlUp).Row
'go through my code column for non-blank
For x = 1 To xlast 'from 1st row till last row
(tab) If (sheet.name.Cells() = "Adam" OR "Edward") And (sheet.status.Cells() = "active")
(tab) Then newsht.Rows.Value(code,title,date,name,description,status) = sheet.Rows().Value(code,title,date,name,description,status)
End If
Next
End Sub
microsoft-excel
worksheet-function
vba
ExcelNovice
źródło
źródło
Odpowiedzi:
Twój przykładowy kod ma kilka problemów:
sheet.name.Cells () = "Adam" LUB "Edward"
newsht.Rows.Value (kod, tytuł, data, nazwa, opis, status)
Wypróbuj poniższy kod. Możesz przypisać go do przycisku, jeśli chcesz. Trzeba zmienić zakres DAT i newdat do własnych arkusz. Główna zmiana w kodzie polega na tym, że przesunięcie służy do iteracji w różnych wierszach i kolumnach (przesunięcie od lewego górnego rogu bloku danych) w celu sprawdzenia każdej linii danych. Każdy czek lub kopia jest kodowany jawnie.
źródło