vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 08 czerwca 2025 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Kopiowanie kilku wierszy do nowego zeszytu jeśli spełniony warunek


otwartyotwarty rozpoczął: tomekkepa postów: 9



napisał: crespiom
postów: 43


umieszczony:
9 marca 2010
16:56

  
Sory,

Zapomniałem, że mają się wklejać tylko wartości

Dim i As Long

With Worksheets("Arkusz1")

i = 1
        Do While .Cells(i, 1) <> ""
            If .Cells(i, 1).Value = "Warszawa" And .Cells(i, 3).Value < 100 Then
                Union(.Cells(i, 1), .Cells(i, 3), .Cells(i, 5)).Select 'wybranie określonych komórek z wiersza
                Selection.Copy
                Worksheets("Arkusz2").Select
                Worksheets("Arkusz2").Range("A65536").End(xlUp).Offset(1, 0).Select
                Selection.PasteSpecial Paste:=xlPasteValues
            End If
        i = i + 1
        Loop
End With

napisał: crespiom
postów: 43


umieszczony:
9 marca 2010
16:26

  
To zrób tak

Poniższy kod kopiuje wybrane komórki z wiersza w Arkuszu1 jeżeli w tym wierszu w kolumnie pierwszej jest tekst "Warszawa" a kolumnie trzeciej jest liczba mniejsza niż 100.

Dim i As Long

With Worksheets("Arkusz1")

i = 1
        Do While .Cells(i, 1) <> ""
            If .Cells(i, 1).Value = "Warszawa" And .Cells(i, 3).Value < 100 Then
                Union(.Cells(i, 1), .Cells(i, 3), .Cells(i, 5)).Select 'wybranie określonych komórek z wiersza
                Selection.Copy Destination:=Worksheets("Arkusz2").Range("A65536").End(xlUp).Offset(1, 0)
            End If
        i = i + 1
        Loop
End With



I powinno śmigać

Pozdrawiam
napisał: tomekkepa
postów: 12


umieszczony:
4 marca 2010
16:55

  
poradziłem sobie w ten sposób:

Dim i As Long


i = 21
Do While Worksheets("PREZZI").Cells(i, 5) <> ""
If Worksheets("PREZZI").Cells(i, 1).Value = "Polonia" Then
If Worksheets("PREZZI").Cells(i, 21).Value = "zip & mail" Then

Worksheets("PREZZI").Rows(i).Copy Destination:=Worksheets("POLONIA").Range("A65536").End(xlUp).Offset(1, 0)
End If
End If
i = i + 1
Loop


Teraz tylko kwestia zeby zamiast calego wiersza kopiowal kilka komorek i wklejal wartosci zamiast formul.
napisał: tomekkepa
postów: 12


umieszczony:
4 marca 2010
16:47

  
Cytat:
Coś takiego powinno ruszyć

Sub Copy_Deals()
Dim i As Long


i = 1
        Do While Worksheets("Arkusz1").Cells(i, 1) <> ""
            If Worksheets("Arkusz1").Cells(i, 1).Value = "Warszawa" And .... (tu wstaw jeszcze 2 warunek) Then
                Worksheets("Arkusz1").Rows(i).Copy Destination:=Worksheets("Arkusz2").Range("A65536").End(xlUp).Offset(1, 0)
            End If
        i = i + 1
        Loop

End Sub





Zadziałało na jednym warunku,
ale gdy drugi wstawiłem: And Worksheets("Arkusz1").Cells(i, 20).Value = "zmiana"
lub: And Cells(i, 20).Value = "zmiana"
To już nie.
Może źle warunek wpisuje?
napisał: tomekkepa
postów: 12


umieszczony:
4 marca 2010
16:03

  
Działa idealnie, a jak zrobić żeby zamiast całego wiersza kopiował tylko np. 3 kolumny oraz żeby wklejał wartości a nie np. formuły?
napisał: crespiom
postów: 43


umieszczony:
4 marca 2010
14:02

  
Coś takiego powinno ruszyć

Sub Copy_Deals()
Dim i As Long


i = 1
        Do While Worksheets("Arkusz1").Cells(i, 1) <> ""
            If Worksheets("Arkusz1").Cells(i, 1).Value = "Warszawa" And .... (tu wstaw jeszcze 2 warunek) Then
                Worksheets("Arkusz1").Rows(i).Copy Destination:=Worksheets("Arkusz2").Range("A65536").End(xlUp).Offset(1, 0)
            End If
        i = i + 1
        Loop

End Sub

napisał: tomekkepa
postów: 12


umieszczony:
3 marca 2010
21:53

  
Nie do końca coś takiego mi pasuje, już takie rozwiązanie gdzieś widziałem, może jest coś co działa na zasadzie "if miasto and status then ...." i to powtarzać aż do ostatniego wiersza (pustego)?
napisał: Rycho
postów: 291


umieszczony:
3 marca 2010
15:23

  
Witaj,
dla danych ustawiłem odpowiednio autofiltr i zarejestrowałem makro podczas wykonywania koniecznych operacji. Po uporządkowaniu makra (praktycznie poprzez usunięcie par select selection), kod wygląda tak:
Sub Makro1()
    Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
    Sheets.Add
    ActiveSheet.Paste
    Range("A1").Select
    Application.CutCopyMode = False
End Sub


czyli
-wybierz komórkę A1, wybierz region zawierający tę komórkę, wybierz tylko widoczne wiersze i kopiuj,
-wstaw nowy arkusz (będzie on automatycznie aktywny),
-wstaw dane ze schowka do nowego arkusza,
-aktywuj komórkę A1 bo aktywne są wszystkie wstawione dane,
-skasuj zaznaczenie kopiowanych komórek (obramowanie z wędrujących mrówek).
napisał: tomekkepa
postów: 12


umieszczony:
3 marca 2010
12:57

  
Witam.
Mam tabelę, załóżmy 20 kolumn, 500 wierszy.
Po wypełnieniu danych, w pierwszej kolumnie jest miasto, dalej jakieś liczby, a w ostatniej kolumnie pojawia się status WYŚLIJ, OK lub inny.
Chciałbym skopiować wszystkie wiersze do nowego zeszytu, które spełniają warunek: miasto = "Warszawa", status = "WYŚLIJ".
Z góry dziękuje za pomoc.


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z