Elektroda.pl
Elektroda.pl
X

Search our partners

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

Excel 2010 - wyszukiwanie takich samych wartosci dodatnich i ujemnych

redziaczki 16 Dec 2012 18:05 8232 15
  • #1
    redziaczki
    Level 8  
    Witam.
    Prosze was o pomoc.
    Potrzebuje jakiejs formuly, etc. ktora wyrozni, zaznaczy w kolumnie taka sama wartosc dodatnia i ujemna.

    np. mam kolumne

    455,70
    789,00
    45,10
    -478,00
    65,00
    -455,70
    45,10

    chcialbym zeby formula wyroznila taka sama kwote dodatnia i
    i ujemna w tym przypadku 455,70 i -455,70

    Probowalem z formatowaniem warunkowym ale tam jest tylko duplikat, czyli wyroznianie takich samych wartosci.

    Bede wdzieczny za pomoc, bo teraz musze recznie szukac takich samych wartosci a kolumna ma ponad 1000 pozycji :/
  • #2
    dt1
    Admin of Computers group
    Witaj,
    Do takiego zadania raczej proste makro niż formuła się bardziej nada. A co, jeśli są dwie różne pary? Ma wyróżniać tym samym, czy innym kolorem?

    Na piechotę możesz to zrobić jeszcze inaczej, dodać dwie kolumny pomocnicze:
    ID / wartość / ABS

    ID miałoby unikatowy numer (liczba porządkowa na przykład). Wartość to byłaby kolumna, w której szukasz. ABS to byłaby kolumna zawierająca wartość z szukanej kolumny, ale bez znaku (czyli funkcja MODUŁ.LICZBY). Wtedy można posortować względem właśnie tej ostatniej kolumny i szukać takich samych wartości - wciąż jednak myślę, że makro byłoby przyjemniejsze.
  • #3
    redziaczki
    Level 8  
    Makro... to dla mnie czarna magia :/
    Jesli ktos mialby chwilke i mogl cos takiego stworzyc albo napisac jak to zrobic, byloby fajnie :)

    Dwie rozne pary? czyli np 54,0 i 2x po -54,0? O to Tobie chodzi? Jesli tak to niech zaznacza wszystko tym samym kolorem chyba
  • #4
    dt1
    Admin of Computers group
    Spróbuj takie coś:
    Code: vb
    Log in, to see the code


    Sprawdzałem pod Excelem 2003 i działa, pod nowszymi też powinno (chyba że masz wersję starter, wtedy działać nie będzie). Makro zakłada, że dane są w kolumnie B od komórki B1. W załączniku przykład (arkusz zapisany z makrem).
  • #5
    marek003
    Level 40  
    Można też wykorzystać formatowanie warunkowe (właśnie z funkcją licz() z Moduł.liczby() ) ale... Wszystkie takie "znalezienia" dla wszystkich liczb z "przeciwnościami" będą zaznaczone tak samo, np na czerwono.

    Proponuje tak jak pisał kolega dt1 dodać kolumnę pomocniczą która określi w którym wierszu znajduje się przeciwna wartość. Przy czym jeżeli będzie parę takich samych "przeciwności" (25, 25 -25 , -25) ten system też się nie sprawdzi.

    Może wymieszać obie metody.

    edit:
    Widzę że spóźniłem się z odpowiedzią.
  • #6
    dt1
    Admin of Computers group
    To moje makro to bardzo prosta sprawa. Nie wykrywa oczywiście sytuacji, w której występuje np jedna liczba dodatnia i kilka liczb ujemnych o tej samej wartości bezwzględnej. Zaznaczy wszystko, co pewnie jest niepożądane (gdyż każdej liczbie ujemnej znajdzie parę w postaci pojedynczo występującej liczby dodatniej). Więc jest miejsce na usprawnienia na pewno.
  • #7
    redziaczki
    Level 8  
    DZieki bardzo :) widac juz swiatelko w tunelu :)

    Teraz pytanie mam jak dopisze w tej kolumnie kilka wierszy z liczbami i uruchomie makro, to jak je potem wylaczyc zeby znow cos dopisac? bo widze ze po uruchomieniu jak dopisuje kolejne wiersze to wszystko idzie na czerwono....
  • Helpful post
    #8
    marek003
    Level 40  
    Uruchom makro i wybierz Makro1 / lub podepnij pod przycisk.

    Ja tylko wtrące że można prościej napisać to makro (zostawiając pomysł)

    Code: vb
    Log in, to see the code


    W załączeniu dodałem jeszcze wykorzystanie Formatowania warunkowego
  • #9
    dt1
    Admin of Computers group
    Rzeczywiście kilka kroków w dół robi czerwone litery :)
    Makro jest uruchamiane raz i kończy działanie mrugnięcie oka później, więc są dwie opcje do wyboru:
    - wpisywać i nie przejmować się kolorem, potem zaznaczyć całą kolumnę i ustawić dla wszystkich wpisów kolor czarny, potem uruchomić jeszcze raz makro.

    albo zmienić makro, które również dla "niesparowanych" wpisów będzie ustawiać kolor czarny, więc można wpisywać dalej ignorując kolor i po wpisywaniu można uruchomić makro raz jeszcze.

    Dodano po 7 [minuty]:

    marek003 wrote:
    Ja tylko wtrące że można prościej napisać to makro (zostawiając pomysł)

    Można, ale zastanawiałem się, czy nie będzie ono szybciej działać mając wszystkie wartości zindeksowane w tablicy? Oczywiście dla kilkuset rekordów to nie jest jakiś zauważalny problem (bo oczywiście prościej jest jeździć po arkuszu, niż na początku budować i wypełniać tablicę) - ale właśnie mnie ciekawi, czy metoda z tablicą jest szybsza, czy nie :)
  • #10
    redziaczki
    Level 8  
    Dzieki bardzo za pomoc.... mam juz jakies podstawy i teraz musze sprawdzic jaka metoda bedzie dla mnie lepsza :) Jak bede mial jeszcze jakies pytania to napisze.
    Pozdrawiam

    Dodano po 11 [minuty]:

    I wracam jeszcze raz, a da rade zrobic tak metoda przez makra albo formatowania warunkowego, zeby znalazl tylko jedna pare czyli jak jest np. 25, -25,-25,-25 to zeby podkreslij tylko 25 i pierwsze -25?
  • Helpful post
    #11
    marek003
    Level 40  
    :arrow: dt1
    Masz rację. Przy 1500 elementach twoje makro dział dwa razy szybciej.

    więc jedynie początek bym zmienił
    z

    Code:
    Range("B1").Select
    
    Selection.End(xlDown).Select
    maxIndex = ActiveCell.Row

    na


    Code:
    maxIndex = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row


    :) Ale dodam że jeżeli już patrzymy na czas to "moje" formatowanie warunkowe w porównaniu do kodów VBA działa bez porównania najszybciej :).
  • #12
    redziaczki
    Level 8  
    Okazalo sie ze te sposoby nie za bardzo sie sprawdzaja bo mamy np 12x 45,5 i 6x -45,5. czyli przy obu tych sposobach mamy zaznaczone 18 wierszy a ma byc tak zeby bylo zaznaczone tylko 6 bo tyle jest par.
  • #13
    dt1
    Admin of Computers group
    O tym właśnie pisałem. Może kolega spróbuje swoich sił mając przykład i wiedząc, jak to działa? Jest kilka sposobów podejścia do tego tematu (jak do każdego). Ogólnie można rozszerzyć kod w taki sposób, aby porównywał tylko komórki z colorindex różnym od 3 (czyli nie czerwone). Można też zrobić dodatkową tablicę i zapisywać już dopasowane elementy (i potem je omijać).
  • #14
    User removed account
    User removed account  
  • #15
    redziaczki
    Level 8  
    dzieki e-mega ale ten sposob juz byl sprawdzany i nie dziala, bo jesli jest np 5 i 8 liczb -5 to zaznacza wszystkie 13 liczb a powinnien tylko 10. ale problem juz rozwiazalem z makro :)
  • #16
    User removed account
    User removed account