ID tematu: 621
 |
Sprawdż i skopiuj do kolejnego wiersza |
Autor |
Wiadomość |
jarekjarek
Exceloholic

Pomógł: 1 raz Posty: 113
|
Wysłany: 06-03-2007, 18:21 Sprawdż i skopiuj do kolejnego wiersza
|
|
|
Witam!
Koledzy experci proszę o makro które sprawdzi każde pole w arkuszu Dane w kolumnie H ale rozpoczynając od H8 do końca i jeżeli w której z komórek kolumny H poczynając od H8 wartość jest większa niż 4 minuty i 59 sekund to skopiuje wartości z arkusza dane z komórki w kolumnie H tej która jest większa od 4 minuty i 59 sekund i komórki w kolumnie B w tym samym wierszu do arkusza opracowane w komórki w kolumnach A i B ale automatycznie do kolejnego wiersza.
Jak z tego wynika dane bedą sie zmieniać w arkuszu dane i tylko jak wartość bedzie wieksza od 4 minuty i 59 sekund to skopiuje kazdą wartość spełniającą warunek do kolejnego wiersza w arkuszu opracowane |
|
 | ID posta:
3308
|
|
|
 |
|
|
|
Trebor
Excel Expert

Pomógł: 1752 razy Posty: 4680
|
Wysłany: 06-03-2007, 19:09
|
|
|
Tak na początek
Kod: |
Sub szukaj()
Dim ostatnia As Long
Dim wiersz As Long
Dim gdzie As Long
gdzie = 1
With Sheets("Dane")
ostatnia = .Columns(8).Find(What:="*", After:=.Cells(8, 8), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For wiersz = 8 To ostatnia
If .Cells(wiersz, 8) > 3.46064814814815E-03 Then
gdzie = gdzie + 1
Sheets("Opracowane").Cells(gdzie, 1) = .Cells(wiersz, 8)
Sheets("Opracowane").Cells(gdzie, 2) = .Cells(wiersz, 2)
End If
Next wiersz
End With
End Sub
|
Pewnie należy jeszcze to czy tamto dorobić, ale zerknij czy początek jest właściwy.
Pozdrawiam |
_________________ Trebbor@wp.pl |
|
 | ID posta:
3313
|
|
|
 |
|
|
jarekjarek
Exceloholic

Pomógł: 1 raz Posty: 113
|
Wysłany: 06-03-2007, 23:35
|
|
|
Dziękuję sprawdzę jutro na swoim kompie nie mam Exdela tylko oppen office |
|
 | ID posta:
3344
|
|
|
 |
|
|
Marian
Starszy Forumowicz

Pomógł: 1 raz Posty: 47
|
Wysłany: 07-03-2007, 10:48
|
|
|
A jak zmienić tę linię
Kod: | Sheets("Opracowane").Cells(gdzie, 2) = .Cells(wiersz, 2) |
aby kopiowało cały wiersz z arkusza dane? |
|
 | ID posta:
3359
|
|
|
 |
|
|
Trebor
Excel Expert

Pomógł: 1752 razy Posty: 4680
|
Wysłany: 07-03-2007, 11:29
|
|
|
Np. tak
Kod: |
.Rows(wiersz).Copy Sheets("Opracowane").Cells(gdzie, 1)
|
Pozdrawiam |
_________________ Trebbor@wp.pl |
|
 | ID posta:
3362
|
|
|
 |
|
|
Marian
Starszy Forumowicz

Pomógł: 1 raz Posty: 47
|
Wysłany: 07-03-2007, 12:52
|
|
|
Dzięki, ja tę linię próbowałem zmienić ale jak to niech pozostanie... niedopowiedziane.
Pozdrawiam |
|
 | ID posta:
3369
|
|
|
 |
|
|
jarekjarek
Exceloholic

Pomógł: 1 raz Posty: 113
|
Wysłany: 07-03-2007, 17:49
|
|
|
Witam działa to makro co mi napisałeś trochę je zmieniłem na swoje potrzeby
Kod: | Sub szukaj()
Dim ostatnia As Long
Dim wiersz As Long
Dim gdzie As Long
gdzie = 10
With Sheets("Dane")
ostatnia = .Columns(8).Find(What:="*", After:=.Cells(8, 8), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For wiersz = 8 To ostatnia
If .Cells(wiersz, 8) > 3.46064814814815E-03 Then
gdzie = gdzie + 1
Sheets("Opracowane").Cells(gdzie, 1) = .Cells(wiersz, 1)
Sheets("Opracowane").Cells(gdzie, 2) = .Cells(wiersz, 2)
Sheets("Opracowane").Cells(gdzie, 3) = .Cells(wiersz, 3)
Sheets("Opracowane").Cells(gdzie, 4) = .Cells(wiersz, 4)
Sheets("Opracowane").Cells(gdzie, 5) = .Cells(wiersz, 8)
End If
Next wiersz
End With
End Sub |
a powiedz mi jeszcze co zmienić aby rozpoczynał sprawdzanie nie w komórce H8 a w H12 i zakończył sprawdzanie w komórce H164 |
|
 | ID posta:
3383
|
|
|
 |
|
|
Trebor
Excel Expert

Pomógł: 1752 razy Posty: 4680
|
Wysłany: 07-03-2007, 17:59
|
|
|
Usuń linię
Kod: |
ostatnia = .Columns(8).Find(What:="*", After:=.Cells(8, 8), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
|
jest zbędna.
Zmień następną linię na
Kod: |
For wiersz = 12 To 164
|
Pozdrawiam |
_________________ Trebbor@wp.pl |
|
 | ID posta:
3384
|
|
|
 |
|
|
jarekjarek
Exceloholic

Pomógł: 1 raz Posty: 113
|
Wysłany: 09-03-2007, 00:42
|
|
|
Dziękuję |
|
 | ID posta:
3412
|
|
|
 |
|
|
francuz gt [Usunięty]
|
Wysłany: 10-04-2007, 07:12
|
|
|
Siemka Treborku!
Faktycznie
Kod:
ostatnia = .Columns(8).Find(What:="*", After:=.Cells(8, 8), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
- ten kod można całkowicie usunąć, gdyż jest niepotrzebny.
A wracając do mojego pytania skierowanego do Ciebie osobiście to podejżewam, że trzeba dodać (tylko co i z jakimi dod. znakami) aby sprawdzał nie tylko z kolumny 8 ale i z 6 ?
Pozdróweczka
Grzegorz T
FRANCUZ-GT |
|
 | ID posta:
4620
|
|
|
 |
|
|
Tajan

Pomógł: 5252 razy Posty: 11450
|
Wysłany: 11-04-2007, 01:11
|
|
|
Jeżeli chcesz sprawdzać tylko niektóre kolumny, to możesz to zrobić np takim kodem:
Kod: | For kol = 12 To 141
Select Case kol
Case 12 To 19, 74 To 80, 105 To 141
For wiersz = 1 To 100
If Cells(wiersz, kol) = "" Then
Cells(wiersz, kol) = kol
End If
Next
End Select
Next |
który pozwoli Ci sprawdzić wiersze 1-100 w kolumnach 12 - 19; 74 - 80; 105 - 141.
Ale nie wiem, czy o to chodziło |
|
 | ID posta:
4658
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona używa plików cookies.
Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe
|