Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel - wyszukiwanie zawartości 2. kolumny w 1. kolumnie

Darassus 16 Aug 2009 17:40 3774 6
  • #1
    Darassus
    Level 9  
    Witam!

    Mam problem z Excelem. W arkuszu są wpisane dwie kolumny z numerami telefonów - 1. ma więcej numerów niż 2. Chodzi o to, żeby Excel wyszukał w 1. kolumnie to, co znajduje się w 2. kolumnie i usunął to - ma zostać to, co się nie powtarza. Próbowałem opcji "filtruj" i funkcji "wyszukaj.pionowo ()", jednak to nie to.

    Proszę o pomoc ;-)
    Kamery 3D Time of Flight - zastosowania w przemyśle. Darmowe szkolenie 16.12.2021r. g. 10.00 Zarejestruj się
  • #2
    adamas_nt
    Moderator of Programming
    Nie napisałeś, z której kolumny ma usuwać. W przykładzie usuwa z kolumny "B". Jeśli ma być odwrotnie, to pozamieniaj w kodzie "A" z "B" lub wpisz swoje. Zakładam, że w kolumnach nie ma pustych wierszy. Próbuj na kopii...
    Code:
    Sub UsunPowt()
    
    licznik = 0
    For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row
        For j = 1 To Cells(Rows.Count, "A").End(xlUp).Row
            If Cells(i, "B") = Cells(j, "A") Then
                Cells(i, "B").Delete Shift:=xlUp
                licznik = licznik + 1
            End If
        Next
    Next
    MsgBox "Usunięto " & licznik
    End Sub
  • #3
    Darassus
    Level 9  
    Być może źle sformułowałem problem. Załączam obrazek z przykładowego pliku Excela:

    Excel - wyszukiwanie zawartości 2. kolumny w 1. kolumnie

    W kolumnie A jest x liczb, w kolumnie B są 2 liczby: "1" i "2". Chodzi mi o to, żeby Excel wczytał liczby z kolumny B i usunął je z kolumny A (mają zostać same trójki, jedna pod drugą). Normalny plik zawiera o wiele większą ilość różnorodnych liczb, rzecz jasna ;-)

    Utworzyłem buttona i wkleiłem tam podany kod - usunęło mi obie cyfry z kolumny B.
  • Helpful post
    #4
    adamas_nt
    Moderator of Programming
    adamas_nt wrote:
    Jeśli ma być odwrotnie, to pozamieniaj w kodzie "A" z "B"

    Też zadziała, ale...

    Edit: Jeśli powtarza sie wiele razy lepiej
    Code:
    Sub UsunPowt()
    
    licz = 0
    For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
        licznik = 0
        For Each kom In Range("A:A")
            If kom.Offset(-licznik, 0) = "" Then Exit For
            If Cells(i, 2) = kom.Offset(-licznik, 0) Then
                kom.Offset(-licznik, 0).Delete Shift:=xlUp
                licznik = licznik + 1
                licz = licz + 1
            End If
        Next
    Next
    MsgBox "Usunięto " & licz
    End Sub
  • #5
    Darassus
    Level 9  
    Dzięki wielkie, pomogło! :-)
    A czy można zrobić jakieś makro, żeby cofało działanie poprzedniego? Tak na wszelki wypadek.
  • #6
    adamas_nt
    Moderator of Programming
    Można kombinować z zapisywaniem do ukrytego arkusza, zapisywaniem w tablicy do pamięci ulotnej, ale najpewniejszym jest zrobienie kopii zapasowej całego arkusza lub pliku.
  • #7
    Darassus
    Level 9  
    Myślałem, że istnieje inny sposób przywrócenia tych danych po zadziałaniu makra, ale jak widzę najskuteczniejszym będzie po prostu kopia danych. Wielkie dzięki za pomoc!