Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 75249 Skopiuj do schowka Kopiowanie danych z dwóch kolumn do drugiego arkusza
Autor Wiadomość
nina1 
Exceloholic


Wersja: Win Office 2016
Posty: 110
Wysłany: 21-11-2023, 19:47   Kopiowanie danych z dwóch kolumn do drugiego arkusza

Witajcie, mam kod, który po znalezieniu określonego tekstu w kolumnie C, kopiuje zawartość z kolumny A z tego samego wiersza. Proszę o pomoc w modyfikacji poniższego kodu, aby kopiował też dane dodatkowo z kolumny B. Dodatkowo, jeśli nie znajdzie w ogóle wyszukiwanego tekstu, to aby informował przy pomocy Msgbox
Kod:
Sub kopiuj()
lastZ = Sheets("dane").Cells(65536, 1).End(xlUp).Row
lastW = Sheets("wynik").Cells(65536, 1).End(xlUp).Row

If lastW < 2 Then lastW = 2
Sheets("wynik").Range("A2:A" & lastW).ClearContents

x = 2
For Each kom In Sheets("dane").Range("C1:C" & lastZ)
    If kom = "szukany tekst" Then
        Sheets("wynik").Range("A" & x) = kom.Offset(0, -2)
        x = x + 1
    End If
Next kom
End Sub
ID posta: 431413 Skopiuj do schowka
 
 
hurgadion 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 1168 razy
Posty: 2675
Wysłany: 21-11-2023, 20:00   

Hej,
zamiast kodu
Kod:

Sheets("wynik").Range("A2:A" & lastW).ClearContents

x = 2
For Each kom In Sheets("dane").Range("C1:C" & lastZ)
    If kom = "szukany tekst" Then
        Sheets("wynik").Range("A" & x) = kom.Offset(0, -2)
        x = x + 1
    End If
Next kom

wklej kod
Kod:

Sheets("wynik").Range("A2:B" & lastW).ClearContents

x = 2
For Each kom In Sheets("dane").Range("C1:C" & lastZ)
    If kom = "szukany tekst" Then
        Sheets("wynik").Range("A" & x) = kom.Offset(0, -2)
        Sheets("wynik").Range("B" & x) = kom.Offset(0, -1)
        x = x + 1
    End If
Next kom
If x=2 Then MsgBox "Nie znaleziono"

W kodzie masz niezadeklarowane zmienne, przetestuj kod (pisałem z palca) i napisz jak to działa, pozdrawiam :lol:
ID posta: 431414 Skopiuj do schowka
 
 
nina1 
Exceloholic


Wersja: Win Office 2016
Posty: 110
Wysłany: 22-11-2023, 09:54   

Działa super. Mam jeszcze jedną prośbę. Jeśli arkuszu "dane" w kolumnie C jest "szukany tekst", ale w kolumnie B jest pusto, to aby zwracał msgbox "brak danych w kolumnie B"
ID posta: 431428 Skopiuj do schowka
 
 
hurgadion 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 1168 razy
Posty: 2675
Wysłany: 22-11-2023, 10:11   

Spróbuj może po linijce:
Kod:

If x=2 Then MsgBox "Nie znaleziono"

dodać następujący kod:
Kod:

If Sheets("dane").Cells(Rows.Count, 2).End(xlUp).Row < 2 Then MsgBox "Brak danych w kolumnie B"

Pozdrawiam :lol:
ID posta: 431430 Skopiuj do schowka
 
 
nina1 
Exceloholic


Wersja: Win Office 2016
Posty: 110
Wysłany: 22-11-2023, 11:58   

Ok, tylko teraz wyświetla oba msgbox'y, jeśli dodatkowo pierwszy warunek jest spełniony MsgBox "Nie znaleziono", a jest on w takim przypadku zbędny
ID posta: 431436 Skopiuj do schowka
 
 
Tajan


Pomógł: 5407 razy
Posty: 11795
Wysłany: 22-11-2023, 12:13   

Komunikat wstaw na początku makra.
Na przykład tak:
Kod:
Sub kopiuj()

If Sheets("dane").Cells(Rows.Count, 2).End(xlUp).Row < 2 Then
    MsgBox "Brak danych w kolumnie B"
    Exit Sub
End If

lastZ = Sheets("dane").Cells(65536, 1).End(xlUp).Row
lastW = Sheets("wynik").Cells(65536, 1).End(xlUp).Row

If lastW < 2 Then lastW = 2
Sheets("wynik").Range("A2:A" & lastW).ClearContents

x = 2
For Each kom In Sheets("dane").Range("C1:C" & lastZ)
    If kom = "szukany tekst" Then
        Sheets("wynik").Range("A" & x) = kom.Offset(0, -2)
        Sheets("wynik").Range("B" & x) = kom.Offset(0, -1)
        x = x + 1
    End If
Next kom

If x=2 Then MsgBox "Nie znaleziono"

End Sub
ID posta: 431438 Skopiuj do schowka
 
 
nina1 
Exceloholic


Wersja: Win Office 2016
Posty: 110
Wysłany: 22-11-2023, 12:46   

Teraz w obu przypadkach wyświetla tylko ten msgbox "Brak danych w kolumnie B", gdyż spełnia ten sam warunek dla obu msgbox'ów.
Poprawnie powinno tak wyświetlać:
"Brak danych w kolumnie B" powinno wyświetlać wtedy, gdy w kolumnie C jest "szukany tekst", a w kolumnie B jest pusto
"szukany tekst" powinno wyświetlać wtedy, gdy w B i C jest pusto
ID posta: 431440 Skopiuj do schowka
 
 
Tajan


Pomógł: 5407 razy
Posty: 11795
Wysłany: 22-11-2023, 13:16   

No, to może tak:
Kod:
Sub kopiuj()

lastZ = Sheets("dane").Cells(65536, 1).End(xlUp).Row
lastW = Sheets("wynik").Cells(65536, 1).End(xlUp).Row
lastB = Sheets("dane").Cells(Rows.Count, 2).End(xlUp).Row

If lastW < 2 Then lastW = 2
Sheets("wynik").Range("A2:A" & lastW).ClearContents

x = 2
For Each kom In Sheets("dane").Range("C1:C" & lastZ)
    If kom = "szukany tekst" Then
        Sheets("wynik").Range("A" & x) = kom.Offset(0, -2)
        Sheets("wynik").Range("B" & x) = kom.Offset(0, -1)
        x = x + 1
    End If
Next kom

If x > 2 And lastB < 2 Then
   MsgBox "Brak danych w kolumnie B"
ElseIf x = 2 Then
   MsgBox "Nie znaleziono"
End If

End Sub
ID posta: 431444 Skopiuj do schowka
 
 
nina1 
Exceloholic


Wersja: Win Office 2016
Posty: 110
Wysłany: 26-11-2023, 21:42   

dziękuję Panowie za pomoc :clap
ID posta: 431609 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

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