Ga naar inhoud

alpha

Lid
  • Items

    1.124
  • Registratiedatum

  • Laatst bezocht

Berichten die geplaatst zijn door alpha

  1. 1 uur terug, vermhans9000 zei:

    De formule die ik van u mocht ontvangen werkt, maar de resultaten kloppen niet. Hij baseert zich ook  enkel op de voornaam om te beslissen tot geantwoord.

    Mijn (laatste) formule hierboven kijk naar zowel voor- als achternaam (dat is ook aan de formule te zien). Niettemin ben ik niet onfeilbaar, daarom mijn vraag: geef a.u.b. eens een voorbeeld waarbij  mijn formule tot een onjuist resultaat leidt.

    Ik vermeld het nog maar eens voor de zoveelste keer, want het wordt vaak vergeten: je hebt de formule toch wel  ingevoerd via Ctrl-Shift-Enter, d.w.z.: de Ctrl- en Shifttoets ingedrukt gehouden terwijl je op Enter drukte?

  2. Een iets kortere versie van mijn formule hierboven.

    Typ in C3 (afsluitend met Ctrl-Shift-Enter) en kopieer naar beneden:

    =als(isnb(vergelijken(a3;als(e$3:e$510=b3;d$3:d$510;0)));"Nee";"Geantwoord")

    Als je ook nog wil controleren of de A- en B-cel zijn ingevuld, typ dan in C3 (natuurlijk ook weer afsluitend met Ctrl-Shift-Enter):

    =als(en(a3>0;b3>0);als(isnb(vergelijken(a3;als(e$3:e$510=b3;d$3:d$510;0)));"Nee";"Geantwoord");"")
    
  3. Ik neem aan dat je alleen de namen in kolom i bedoelt, omdat je alleen daarvan het aantal maanden hebt berekend. Als de namen in kolom D ook mee moeten doen kun je best alle namen onder elkaar plaatsen, anders moet je onderstaande berekening twee keer uitvoeren en de uitkomsten optellen.

    "Tussen 4 maanden en 15 maanden" wil zeggen: meer dan 4 maanden en minder dan 15 maanden. Dat kun je bv. op deze manier berekenen:

    =aantal.als(L7:L31;">4")-aantal.als(L7:L31;">14")

    Uitkomst: 7

    Voor het aantal tussen 16 en 30 maanden moet je in bovenstaande berekening  alleen de getallen van de maanden aanpassen.

  4. 16 uren geleden, dotchiejack zei:

    hoe zou Excel moeten weten wat de oude kleur was?

    Goed dat je het naar wens hebt gekregen,echter het resultaat is niet wat je vroeg .

    Goed opgemerkt Dotchiejack !

    In het uiteindelijke resultaat blijken er geen miljoenen kleuren te zijn, maar slechts 2 (en slechts 1 'vorige' kleur). Dat maakt de vraag vele malen eenvoudiger.

    @rik

    Als je toch al twee keer de colorindex gebruikt, waarom doe je dat dan ook niet de derde keer?

    Color = RGB(146, 205, 220) in vrijwel dezelfde kleur als Colorindex = 37 .

  5. Heb je gezien dat ik ze gewijzigd heb? In eerste instantie had ik de -1 vergeten.

    Ze zou nu de naam van de juiste kleur moeten weergeven. 

    Als dat bij jou niet zo is, wat is dan het probleem? Als je de formule in een ander blad dan blad1 gebruikt, dan moet je wel de naam van blad1 in de formule vermelden.

  6. 3 uren geleden, FredSiegl zei:

    Ik snap dat je idd met de recorder de code van dat gedeelte kan krijgen, maar hoe krijg ik zoiets dan standaard voor mijn neus?

    De oplossing die ik nu gebruik is het kopieren naar een nieuwe tabblad. 

    Zoals ik al schreef: als je M27:S36 in beeld wil hebben, dan experimenteer je wat met verschuiven van rijen en kolommen. Als je dat doet terwijl de recorder aan staat, dan wijzig je de code net zo lang tot je in beeld hebt wat je in beeld wil hebben. Bv. je macro afsluiten met:

    With ActiveWindow
    .ScrollRow = 26
    .ScrollColumn = 8
    End With

    Bovenstaande doet het goed op mijn computer, maar dat kan op de jouwe anders zijn; gewoon de getallen aanpassen indien nodig

    Hoe mijn eigen code eruit ziet, dat weet ik uiteraard wel, dus die hoef je op het forum niet te herhalen.

    Zoek bij elke opdracht in de vba-helpfile op wat die doet en wat ze betekent en oefen er dan mee, dan begrijp je ze wel.

    Als je nog niet veel ervaring hebt met vba (en Excel zonder vba goed kent, dat is een minimum-voorwaarde), dan kun je best met zeer eenvoudige dingen beginnen en je niet te veel tegelijkertijd op de hals willen halen. Ik heb de indruk dat dat laatste het geval is, maar ik kan me vergissen.

  7. Kan ik aan de knoppen in het formulier ook een soort autoload van 'Macro1' toevoegen, zodat al mijn data telkens geupdate wordt?

    Ja, daarvoor moet je onderaan je code alleem maar macro1 te typen, als macro1 de de macro is die je gegevens updatet.

    De knoppen van het formulier geven een waarde aan de geselecteerde cel en selecteren daarna de volgende cel. Kan dit ook automatisch onder het laaste stukje data geplaatst worden in kolom A i.p.v. het telkens te moeten te selecteren?

    Ja. Hoe je iets onder de laatste cel plaatst, kun je uit de macro's halen die ik hierboven plaatste. Om de kleur mee te kopiëren zou je de RGB-waarde moeten weten omdat je je kleuren hebt gekozen uit het miljoenenpallet (uit de kleurenindex zou eenvoudiger geweest zijn voor het programmeren). Dat probleem kun je omzeilen door aan de cellen met de kleurennamen in de eerste rij de kleuren toe te voegen; je kunt dan, als je in het formulier een kleur hebt gekozen, bepalen welke cel daar bovenaan mee overeenkomt en die cel kopiëren naar de eerstvolgende cel onderaan in de eerste kolom. Je hoeft dan geen RGB-waarde te weten.

    De data uit M27:S37 zou ik altijd in beeld willen hebben om af te kunnen lezen.

    Zet de macrorecorder aan terwijl je dat bereik in beeld brengt, dan heb je meteen de code (ongeveer).

  8. Wel, dat zijn toch de getallen die mijn macro op blad2 als laatste in elke rij plaatst?

    Om snel klaar te zijn, heb ik aan mijn macro een stukje toegevoegd (het kan dus sneller en efficiënter), die komt er dan zo uit te zien:

    Sub macro1()
    Dim a As Integer, cl As Range, k As Integer, kl As String, lr As Integer
    Dim mc As Range, r As Integer, st As Integer, x As Integer, y As Integer
    Sheets(2).Cells.ClearContents
    With Sheets(1)
    r = 1: lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    Set mc = .Range("c1:l1")
    For Each cl In mc
    k = 1: kl = cl.Value
    Sheets(2).Cells(r, 1) = kl
    st = Application.Match(kl, .Range("a1:a" & lr), 0)
    For x = st To lr
    y = 1
    Do While (x + y) <= lr And .Cells(x + y, 1).Value <> kl
    y = y + 1
    Loop
    k = k + 1
    Sheets(2).Cells(r, k).Value = y
    st = x + y: x = x + y - 1
    Next x
    r = r + 1
    Next cl
    End With
    With Sheets(2)
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row + 2
    r = lr + 2
    For y = 1 To lr
    .Cells(r, 1).Value = .Cells(y, 1).Value
    .Cells(r, 2).Value = .Cells(y, .Cells(y, .Columns.Count).End(xlToLeft).Column)
    r = r + 1
    Next y
    End With
    End Sub

     

    Wil je bij nader inzien niet het laatste- maar voorlaatste getal, dan behoeft de macro slechts een zeer kleine aanpassing.

     

  9. Als je een vergelijking maakt moet je die wel in precies dezelfde omstandigheden uitvoeren (zeker als je het over minieme delen van seconden hebt), en dat doe je niet als je twee macro's na elkaar laat lopen.  Maar over die enkele hondersten van seconden ga ik verder geen discussie voeren.

  10. Ik begrijp het niet helemaal, maar dat kan aan mij liggen.
    Als ik het goed zie dan heb je ik kolom 1 alle mogelijke kleuren staan en die verdeel je over de andere kolommen. Hoe die verdeling in zijn werk gaat, is mij niet duidelijk, maar misschien hoef ik dat ook niet te weten om de berekening te kunnen maken die je wil.
    Als we alleen kijken naar kolom 1, dan komt geel voor in de rijen 2, 13, 27, 38, 40, 54, 64, enz.
    Moet je dan als resultaat het verschil  tussen die rijen weten, dus 11, 14, 11, 2, 14, 10, enz. ?
    En daarna dezelfde berekening voor alle andere  kleuren in kolom 1 (oranje, blauw, rood, wit, enz.)?
    Als dat niet juist is, geef dan aub aan wat (welke getalllen) je als uitkomst wil en op grond waarvan.
    Overigens: als het spel goed gemaakt is, dan zou de volgorde van de kleuren 'at random' gekozen moeten worden en zou je er geen bepaald systeem in moeten kunnen ontdekken.
     

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.