Aktywne Wpisy
Nie mogę uwierzyć, że ruchy antynatalistyczne na świecie są wciąż tak mało słyszalne i obecne. To jest absurd, że w czasach, kiedy tak głośno mówi się o dobru jednostki, jej prawach i wolności do samodecydowania, kiedy teoretycznie jest tak powszechne zrozumienie działania świata - wciąż dopuszcza się i, wręcz promuje, płodzenie nowych jednostek. David Benatar tak pięknie i klarownie tłumaczy jak to jest złe - to jest nieobalalne. To jest chore. Życie
wszystkogra +185
Smutno się patrzy na straty ZSU w Donbasie. To ukraińscy wojownicy bronią Ukrainy, ale i co ważniejsze Europy od tego terrorystycznego potwora. Daliśmy się wciągnąć w jakieś afery zbożowe czy malinowe. Wiadomo, to musi być uregulowane i wyjaśnione, ale źle się patrzy na te antyukraińskie nastroje. Idziemy tym na ręke rosji, a zapominamy jako społeczeństwo o tym, że najważniejsza jest przegrana z kretesem swołoczy ruskiej.
#ukraina #rosja #wojna
#ukraina #rosja #wojna
Praca wymaga ode mnie programowania(nie wiem czy to programowanie/kodowanie, czy VBA jest uznawany za kogos za jezyk programowania) w VBA.
Tworzymy makra dla naszych administratorów, dzięki którym pomaga to im w pracy ;)
Działa za zasadzie Index-Match, tylko w jednej funkcji.
Chciałem stworzyć funkcję jak Vlookup, gdzie można ustawiać minusowe wartości kolumn :) [offset]
Wymagane argumenty to: wartosc szukana, kolumna w ktorej sie znajduje ta wartosc i opcjonalnie liczba kolumn do przodu(liczba z plusem), do tyłu (z minusem). Teraz jak patrze na kod, moglbym dorzucić sprawdzanie kolumny, jeżeli wartość pierwsza jest odwołaniem do komórki. Pobawię się z tym później ;)
Chciałbym nauczyć się jak najwięcej, więc bądźcie srodzy ;)
#vba #programowanie #excel #funkcja
Pozdrawiam, kod poniżej.
Public NumberOfColumn As Integer, NOCAndOffset As Integer, ResultVariable
Function IndexMatch(WordValue, WordRange, Optional Offset = 0)
Application.ScreenUpdating = False
Application.Volatile
NumberOfColumn = WordRange.Column
NOCAndOffset = NumberOfColumn + Offset
MatchResult = Application.WorksheetFunction.Match(WordValue, Columns(NumberOfColumn))
If NOCAndOffset > 0 Then
ResultVariable = Application.WorksheetFunction.Index(Columns(NOCAndOffset), MatchResult)
IndexMatch = ResultVariable
Else
MsgBox "Column number is 0 or lower!"
IndexMatch = "Column number is 0 or lower!"
End If
Application.ScreenUpdating = True
End Function
Tak, masz rację, ale z tego co widziałem nie ma innej opcji, żeby arkusz odświeżał się płynnie przy bez volatile, ewentualnie przy zmianie na worksheecie.
A funkcja jest jako początek drogi, korzystam z niej sam w personalnym arkuszu na jakieś bardzo szybkie obliczenie. :)
I rozumiem, że ta funkcja jest bez sensu na większą skalę, ale do
Nie bardzo widzę, gdzie to przyspieszenie - zamiast podać wektor wynikowy, trzeba liczyć offset. Poza tym zarówno vlookup, jak i podana przez Ciebie funkcja mają wadę - kiepsko to działa przy wypełnianiu w poziomie - trzeba ręcznie zmieniać offset. Często zamiast vlookup stosuję index/match - pozbawione tej wady, mimo że vlookup jest szybsza od index/match.
hm, w vlookupie tez musisz liczyc offset, jakby nie patrzeć :)
zauważyłem to i poprawiłem juz :) rzeczywiście, mój błąd :)
a gdzie jest przyspieszenie? hm, w sumie w pisaniu kodu :) tak
No to czepiania dalsza część:
- zmienne powinny być zadeklarowane wewnątrz funkcji, a nie globalnie
- każdy moduł powinien bezwzględnie zaczynać się:
Option Explicit
- zmienna ResultVariable jest zadeklarowana niepotrzebnie, zamiast:
ResultVariable = Application.WorksheetFunction.Index(Columns(NOCAndOffset), MatchResult)
IndexMatch = ResultVariable
Powinno być:
IndexMatch = Application.WorksheetFunction.Index(Columns(NOCAndOffset), MatchResult)
- brak obsługi błędów
To na razie tyle:)
Nie korzystałem raczej z kursów/książek tylko szukałem stron pod konkretny problem
Z excelem pracuję naście lat, z różną intensywnością, przez pewien czas sporo robiłem w VBA excela, teraz od niedawna znowu VBA, ale inny program
Tak, język w zależności od wymagań zmieniał się VB, C#, C++, delphi.