• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kiezen van tussenliggende getallen in een reeks

  • Onderwerp starter Onderwerp starter K2M
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

K2M

Gebruiker
Lid geworden
5 jul 2006
Berichten
81
Stel ik heb een reeks getallen en twee variabelen

reeks getallen 1-2-3-4-5-6-7-8-9-10

de variabelen geven aan welke tussenliggende getallen er gekozen moeten worden

als de variabelen 2 en 6 zijn moeten de getallen tussen 2 en 6 (3,4,5) gekozen worden

Hoe kan ik dit het beste formuleren in een logische test?
 
Beste K2M,

Hoe staat die reeks in Excel? Eén getal per cel, of alle getallen in één cel met een liggend streepje ertussen? Is het altijd een oplopende reeks? Zijn het altijd hele getallen groter dan 0? Hoe worden de grenzen bepaald? Wordt de laagste grens altijd als eerste gegeven?
Afhankelijk van je antwoorden kan het met een formule of met VBA.

groeten,

RIchard
 
Beste K2M,

Hoe staat die reeks in Excel? Eén getal per cel, of alle getallen in één cel met een liggend streepje ertussen? Is het altijd een oplopende reeks? Zijn het altijd hele getallen groter dan 0? Hoe worden de grenzen bepaald? Wordt de laagste grens altijd als eerste gegeven?
Afhankelijk van je antwoorden kan het met een formule of met VBA.

groeten,

RIchard

Dus K2M,

meer info geven of et kan weinig voor je gedaan worden. Of er moet al een heel algemene oplossing gegeven worden en die zijn natuurlijk moeilijker dan een particuliere oplossing.
 
Sorry voor de late reactie, maar ik was even een paar dagen wag.

Het is een getal per cel, de getallen zijn altijd groter dan 0, de reeksen verschillen in aantal (het aantal getallen varieert van 1 tot 13)

Ik zal dadelijk wel een bestand bijvoegen
 
De vraagstelling is iets gewijzigd.

De dataset bestaat uit cijfers en letters (J en N). In het voorbeeldbestand zijn 40 respondenten. Er is een verband tussen de cijfers en letters. Bijv. respondent 2 heeft 12 en 13 bezocht, waarbij 12 gepland was (J) en 13 niet-gepland (N).

Ik wil graag de bezoeknummers weten van niet-geplande bezoeken die tussen twee geplande bezoeken liggen, hoe kan ik dit het beste modeleren?

Dus ik wil de N weten van de reeks J-N-J
Wanneer er meerdere J zijn bijv: J-N-J-J-J-N-N-J, dan wil ik graag de N weten van J-N-J en J-N-N-J

Hopelijk kunnen jullie met een makkelijke oplossing komen, want ik weet zelf wel een oplossing alleen die is heel lang
 

Bijlagen

Je zoekt eerst de mogelijke combinaties waarbij de waarden N omsloten worden door 2 J's. Je hebt 13 bezoeken, dus je vergelijkt de waarden van bezoek 1 met bezoek 3, bezoek 1 met bezoek 4 etc. tot en met bezoek 1 met bezoek 13. Dit doe je ook voor bezoek 2 en bezoek 4 etc.

Je hebt dan 66 kolommen, waarbij de per kolom een verschillende logische test.

Voor bijvoorbeeld bezoek 1 met bezoek 4 kijk zijn de voorwaarden;

Als P3 is "J"
Als S3 is "J"
Als bereik Q3:S3 is "N"

Als aan de drie voorwaarden wordt voldaan dan kies je waarde voor N. Alleen heb ik een probleem als bij J-N-N-J twee waardes moet krijgen. Dus hier zit ik vast.

Misschien heb jij een beter oplossing, of de oplossing voor bovenstaand probleem
 
Misschien heb jij een beter oplossing

Ik denk het wel... :D

Code:
Sub onverwachtbezoek()
Dim r As Long, i As Integer, concat As String
Columns("AD:AS").ClearContents
For r = 3 To 42
    concat = ""
    For i = 1 To Application.WorksheetFunction.Count(Range("B" & r, "N" & r))
        concat = concat & Range("O" & r).Offset(0, i)
    Next
    
    If InStr(1, concat, "JN") > 0 Then
        For i = 2 To WorksheetFunction.Count(Range("B" & r, "N" & r))
            If Mid(concat, i, 1) = "N" And InStr(i + 1, concat, "J") > 0 Then
                Range("AC" & r).Offset(0, i) = Range("A" & r).Offset(0, i)
            End If
        Next
    End If
Next
MsgBox "Klaar!"
End Sub

Test het en post je bevindingen.

Wigi
 
Laatst bewerkt:
- Druk Alt-F11, je komt in VBA omgeving
- Druk Ctrl-R
- Localiseer de naam van je bestand in de Project explorer
- rechts klik erop
- kies Insert > Module
- plak de code die ik gaf in het witte scherm
- druk Alt-F11, je bent terug in Excel

- druk Alt-F8 en voer de macro uit (run)

Lukt het?

Wigi
 
Geweldig! Straks even langs de bibliotheek gaan om een VBA -boek te gaan lenen, want dit is tijdbesparend.

Dank U.
 
Geweldig! Straks even langs de bibliotheek gaan om een VBA -boek te gaan lenen, want dit is tijdbesparend.

Dank U.

Graag gedaan.

Let er wel op dat de code die ik gaf niet tot stand komt na een avondje lezen... :confused: Was het maar zo...

Boeken van John Walkenbach of Curtis Frye zijn steeds degelijk.

Wigi
 
Een probleempje in rij 1383

Hiermee opgelost?

Code:
Sub onverwachtbezoek()
Dim r As Long, i As Integer, j As Integer, concat As String
Columns("AD:AS").ClearContents
For r = 3 To 1414
    Application.StatusBar = "Evaluating row " & r - 2 & " of 1412 rows..."
    concat = ""
    For i = 1 To Application.WorksheetFunction.Count(Range("B" & r, "N" & r))
        concat = concat & Range("O" & r).Offset(0, i)
    Next
    
    If InStr(1, concat, "JN") > 0 And InStr(1, concat, "JN") < Len(concat) - 1 Then
        For i = 2 To WorksheetFunction.Count(Range("B" & r, "N" & r)) - 1
            If Mid(concat, i, 1) = "N" Then
                If InStr(1, Mid(concat, 1, i - 1), "J") > 0 And _
                    InStr(1, Mid(concat, i + 1), "J") > 0 Then
                        Range("AC" & r).Offset(0, i) = Range("A" & r).Offset(0, i)
                End If
            End If
        Next
    End If
Next
MsgBox "Klaar!"
Application.StatusBar = ""
End Sub

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan