Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA / Excel - Generowanie losowych opisów

szymon708 23 Lis 2012 09:26 2271 12
  • #1 23 Lis 2012 09:26
    szymon708
    Poziom 11  

    Witam!

    Jest problem :-) Potrzebuje zrobić mini program do generowania losowych opisów pewnych czynności pracowniczych. I nie byłoby w tym nic trudnego, gdyby nie fakt, iż nie wszystko mogę ze sobą łączyć.

    Zrobiłem 4 kolumny z czynnościami i chciałbym, żeby program losując odpowiednią wartość z kolumny A łączył ją z odpowiednimi wartościami z kolumny B itd.

    Mam nadzieje, że dość jasno to opisałem :-)

    0 12
  • Pomocny post
    #2 23 Lis 2012 10:11
    marcinj12
    Poziom 40  

    Uzyj funkcji losującej numer wiersza w adresie i złącz 4 takie funkcje:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 23 Lis 2012 10:59
    szymon708
    Poziom 11  

    Walczę z tym, ale mi nie wychodzi. Nie wiem czy dobrze się zrozumieliśmy więc załączam plik.

    Kolory mogą się łączyć tylko ze sobą, natomiast kolumny bez kolorów mogą się łączyć ze wszystkimi :-)

    0
  • #4 23 Lis 2012 11:42
    arnoldziq
    Moderator Programowanie

    Nie baw się w to :)
    Zrób tak :
    Wygeneruj możliwe permutacje pierwszej i 3-ciej kolumny :
    a-a, a-b, a-c, b-a,b-b,b-c,[...], e-d,e-e itd.
    I losuj z gotowych permutacji. Natomiast kolumnę drugą i czwartą losuj pełnym zakresem.

    0
  • #5 23 Lis 2012 11:50
    szymon708
    Poziom 11  

    arnoldziq napisał:
    Nie baw się w to :)
    Zrób tak :
    Wygeneruj możliwe permutacje pierwszej i 3-ciej kolumny :
    a-a, a-b, a-c, b-a,b-b,b-c,[...], e-d,e-e itd.
    I losuj z gotowych permutacji. Natomiast kolumnę drugą i czwartą losuj pełnym zakresem.


    I tak bym zrobił. Problem w tym, że kolumn mam kilkanaście, a każda ma kilkanaście wierszy. Możliwości jest trochę za dużo, żeby to zrobić ręcznie. Myślałem, żeby to obejść funkcjami :-)

    0
  • #6 23 Lis 2012 11:52
    arnoldziq
    Moderator Programowanie

    Wszystko w porządku, ale jak zamierzasz ograniczyć losowanie do tych "połączonych", które mogą występować tylko ze sobą nawzajem ?

    0
  • #7 23 Lis 2012 12:01
    szymon708
    Poziom 11  

    W teorii miało to wyglądać tak: Jeżeli wylosujesz z zakresu A1:A10 to połącz z losową wartością kolumny B, a następnie z wylosowaną wartością z przedziału C1;C3;C5, i dalej z losową wartością z kolumny D i losową wartością z przedziału E1:E10

    0
  • Pomocny post
    #8 23 Lis 2012 12:15
    arnoldziq
    Moderator Programowanie

    No ja rozumiem tę "teorię" :)
    Tylko, że to fajnie wygląda, jak się patrzy na ekran Excel-a. Natomiast "surowe" dane musisz jakoś przyporządkować, żeby te pary z kolumn A i C się jakoś ze sobą łączyły.

    0
  • #9 23 Lis 2012 12:38
    szymon708
    Poziom 11  

    No właśnie myślałem, że może się uda zrobić :-) Ale wydaje mi się, że Twój pomysł może się sprawdzić. Fakt początkowo może być dużo z tym pracy jednak ostatecznie powinno zadziałać.
    Chyba, że ktoś jeszcze wpadnie na jakieś ułatwienie mojej sprawy także pozostawiam otwarty i zabieram się do pracy.

    Dzięki !

    0
  • #10 26 Lis 2012 13:30
    szymon708
    Poziom 11  

    Wracając do tematu:

    Jest jakiś sposób na zablokowanie funkcji RANDBETWEEN ? Mając je wpisane w całym skoroszycie gdziekolwiek kliknę losuje mi na nowo wartość.

    Da się to zmienić aby losowało tylko na wyraźną komendę ? I zatrzymywało się po wylosowaniu ?

    I czy da się to zrobić bez makra ? Bo stosowanie makra na wstawienia jako wartość po każdym losie trochę mija mi się z celem ;/

    0
  • #11 26 Lis 2012 13:53
    marcinj12
    Poziom 40  

    szymon708 napisał:
    Jest jakiś sposób na zablokowanie funkcji RANDBETWEEN ? Mając je wpisane w całym skoroszycie gdziekolwiek kliknę losuje mi na nowo wartość.

    Da się to zmienić aby losowało tylko na wyraźną komendę ? I zatrzymywało się po wylosowaniu ?
    Nie da się. Tak działa ta funkcja.

    0
  • #12 27 Lis 2012 08:46
    szymon708
    Poziom 11  

    Męczę się i męczę i staram się zrobić jak najbardziej automatyczne to moje makro.
    Myślałem nad zastosowaniem userforma.
    W teorii każdy wygenerowany tekst z danej kolumny chciałbym przypisać do CheckBox'a. Po zaznaczeniu dowolnych ChcecBox'ów łączył by je w cały tekst.

    Kolorem niebieskim zaznaczyłem wartości które chciałbym przypisać do CheckBox'ów.

    0
  • #13 27 Lis 2012 10:58
    marcinj12
    Poziom 40  

    Aha, dopiero teraz załapałem że te opisy nie mogą być całkowicie "losowe" tylko z określonych zakresów... :)
    W takim razie funkcją nie bardzo to się załatwi, proponuję makro takie jak w załączniku:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    W kodzie musisz określić tablicę poszczególnych zakresów (zmienna tablica). Każdym elementem tej tablicy jest kolejna, dwuwymiarowa tablica (zmienna tabl), gdzie pierwszy wymiar odpowiada kolumnie z danymi A-D (1 - 4), a drugi: numerom wierszy od - do.
    Czyli zapis:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    oznacza, że dla kolumny A (1) definiujemy zakres wierszy od 1 do 4.

    jakby coś było niezrozumiałe to pytaj.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo