Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel - jak dynamicznie zmieniać liczbę w formule warunku ?

07 Kwi 2009 15:43 6038 16

  • Poziom 20  
    Witam,
    mam taką formułę:
    Code:
    =LICZ.JEŻELI(repaired!D135:D200;C14)

    działa ona tak że sprawdza ile jest numerów z (takich jak w C14) w zakresie Od D135 do D200.
    moje pytanie: jak zrobić dynamiczną zmianę końca tego zakresu?
    Code:
    =LICZ.JEŻELI(repaired!D135:D(w tym miejscu ma być liczba z  komórki E1);C14)

    Jeśli w komórce E1 wpiszę 220, to zakres ma się zmienić do 220, jeśli 221 to do 221 itd...
    Zrobiłem coś takiego:
    Code:
    =LICZ.JEŻELI(repaired!D135:D(200+E1);C14)

    ale nie działa... na logikę to jest ok, ale w Excelu pewnie nie...
  • Pomocny post
    Moderator Programowanie
    Spróbuj:
    Code:
    =LICZ.JEŻELI(ADR.POŚR("repaired!D135:D"& E1);C14)

  • Poziom 20  
    Code:
    =LICZ.JEŻELI(ADR.POŚR("repaired!D135:D"& E1);C14)

    Formuła działa tak że komórka E1 określa cały zakres.
    Jeśli liczba 12 to zakres od 1 do 12.
    Ja potrzebuję żeby do 200, dodała się liczba z komórki. I całość tworzy zakres
    Wpisałem:
    Code:
    =LICZ.JEŻELI(ADR.POŚR("repaired!D135:D200"& E1);C14)

    Ale nie spełnia zadania...
  • Pomocny post
    Moderator Programowanie
    Musiałem źle zrozumieć. W takim razie spróbuj:
    Code:
    =LICZ.JEŻELI(ADR.POŚR("repaired!D135:D"& 200+E1);C14)

  • Poziom 20  
    Dzięki, działa świetnie.
    Wyniknął jeszcze jeden problem...
    Excel - jak dynamicznie zmieniać liczbę w formule warunku ?
    Zliczanie ile jest w danym zakresie takich numerów, działa, (funkcja LICZ.JEŻELI) ale muszę podać tam zakres, i po każdym dniu pilnować żeby zakres nie wychodził poza dany dzień. Trochę to uciążliwe
    Można to jakoś sprawdzić za pomocą daty?
  • Moderator Programowanie
    Pytania pomocnicze:
    1. Czy "szara" kolumna (data) to komórki scalone?
    2. Numeracja (kolumna 2 od lewej) w każdym dniu rozpoczyna się od 1?
    3. Czy dopuszczasz możliwość zastosowania w swoim arkuszu makro?

  • Poziom 20  
    1. Szara nie jest scalona, ale może być. Bo czasem scalałem czasem nie.
    2. Numeracja 2 kolumny, zawsze od 1. Ale problem w tym: że na początku dnia nie jestem w stanie określić jak dużo będzie pozycji. Gdybym wiedział wcześniej jaki zakres to nie byłoby problemu
    3. Tak, makro jak najbardziej ( a dlaczego pytanie o makro? już kilka osób o to pytało )

  • Poziom 20  
    działa bardzo dobrze, a można tą kolumnę wypełniać automatycznie? bo ja tych modeli mam 20 i musiałbym 20 razy klikać "Policz"
  • Pomocny post
    Moderator Programowanie
    Wklej do modułu w przykładzie
    Code:
    Sub kopiuj()
    
    koniec = Range("D1").End(xlDown).Row
    Range("D1:D" & koniec).AdvancedFilter Action:=xlFilterCopy, _
    copytorange:=Columns("AA:AA"), Unique:=True
    Range("AA2:AA" & Range("AA1").End(xlDown).Row).Copy Range("F5")
    Range("AA1:AA" & Range("AA1").End(xlDown).Row).ClearContents
    End Sub

    i uruchom.

    P.S. Uwaga: zakładam, że kolumna AA nie jest przez Ciebie wykorzystywana.

    Edit: mała poprawka zakresu kopiowania.

  • Poziom 20  
    zaraz sprawdzę, teraz odkryłem że jest coś jeszcze.
    zauważyłem że komórkę z datą w (tam gdzie oblicza) mogę przesuwać, "abc". Ale jeśli to przesunę to wynik i tak zostaje w jednej i tej samej kolumnie.

    Excel - jak dynamicznie zmieniać liczbę w formule warunku ?

    i tu już są błędy...
    Excel - jak dynamicznie zmieniać liczbę w formule warunku ?

  • Poziom 20  
    WIELKIE DZIĘKI.
    To właśnie potrzebowałem. Jeśli teraz musiałbym zmienić żeby ta tabela tworzyła się w innym arkuszu, to gdzie muszę dodać to:
    Code:
    nazwa_arkusza!

    w którym miejscu w makro?
    Juz wstawiłem coś takiego "Arkusz2!" przed każdym G5 i F6 ale nie działa to przy:
    Code:
    Range(Cells(5, "Arkusz2!F"), Cells(zakrOd, zakrDo)).ClearContents
  • Pomocny post
    Moderator Programowanie
    Podmień całe makro
    Code:
    Sub wyszukaj()
    
    wrk = "Arkusz2" 'TU WPISZ NAZWE ARKUSZA w cudzysłowiu
    Application.ScreenUpdating = False
    'wyczysc zakres
    Sheets(wrk).Select
    zakrOd = Range("F6").End(xlDown).Row
    zakrDo = Range("G5").End(xlToRight).Column
    Range(Cells(5, "F"), Cells(zakrOd, zakrDo)).ClearContents
    Sheets(1).Select 'indeks arkusza, na ktorym jest przycisk

    'kopiowanie
    koniec = Range("D1").End(xlDown).Row
    Range("D1:D" & koniec).AdvancedFilter Action:=xlFilterCopy, _
    copytorange:=Columns("AA:AA"), Unique:=True
    ile = Range("AA1").End(xlDown).Row
    Range("AA2:AA" & ile).Copy Sheets(wrk).Range("F6")
    Range("AA1:AA" & ile).ClearContents

    For a = 2 To koniec
        If Range("A" & a) <> "" Then
            Sheets(wrk).Range("G5").Offset(0, liczn1) = Range("A" & a)
            liczn1 = liczn1 + 1
        End If
    Next

    'licz.jezeli
    ile_dat = Sheets(wrk).Range("G5").End(xlToRight).Column - 6

    For kol = 1 To ile_dat
        'przesuwamy kolumne w prawo data w G5 i dalej
        liczn1 = 0
        For os = 1 To ile - 1 'ile fraz do szukania
            licznik = 0
            'przesuwamy wiersz w dół
            For wiersz = 2 To koniec
                If Range("A" & wiersz) = Sheets(wrk).Range("G5").Offset(0, liczn2) Then
                    i = wiersz
                    For i = wiersz To koniec
                        If Range("A" & i) > Sheets(wrk).Range("G5").Offset(0, liczn2) Then Exit For
                        If Range("D" & i) = Sheets(wrk).Range("F6").Offset(liczn1, 0) Then
                            licznik = licznik + 1
                        End If
                    Next i
                End If
            Next wiersz
            Sheets(wrk).Range("G6").Offset(liczn1, liczn2) = licznik
            liczn1 = liczn1 + 1
        Next os
    liczn2 = liczn2 + 1
    Next kol

    Application.ScreenUpdating = True
    End Sub


    p.s. w A17 w moim przykładzie nieprawidłowa data powodująca błędy...

  • Poziom 20  
    Witam ponownie.
    Po czasie chciałem ponownie użyć formuły o której pisałem na początku, ale ciągle wyskakuje informacja o błędzie.
    Co jest nie tak?
    Chcę sumować wartości komórek, ale zakresy sumowanych muszą być pobierane z innych komórek N102 i N103
    Czyli:
    Nornalna formuła:
    Code:
    =SUMA(C102:C113)

    Przykład:
    Code:
    =SUMA(C(wartość z N102):C(wartość z N103))

    Powinno to wyglądać tak?:
    Code:
    =SUMA(ADR.POŚR("C&N102:C&N103"))
  • Moderator Programowanie
    Prawie :)
    =SUMA(ADR.POŚR("C"&N102):ADR.POŚR("C"&N103))

    P.S. Tak na przyszłość:
    Składając funkcję z kilku innych zawsze próbuje je "pojedynczo". Sprawdzam Np tak:
    1. Czy funkcja =ADR.POŚR("C"&N102) zwraca wartość jaką oczekuję
    2. To samo dla N103 i mam dwa odwołania
    3. do SUMA(odwołanie:odwołanie) przez kopiuj/wklej w trybie tekstowym (bez znaku "=" na początku) podstawiam odwołania
    suma(ADR.POŚR("C"&N102)
    suma(ADR.POŚR("C"&N102):ADR.POŚR("C"&N103))
    4. I teraz na początku funkcji wpisuję "=", naciskam ENTER i trzymam kciuki. Jeśli brakuje gdzieś nawiasu, to Excel zwykle podpowie...

  • Poziom 20  
    DZIĘKI, tego brakowało