regelnummers met gezochte string opslaan in array

Status
Niet open voor verdere reacties.

Jors

Gebruiker
Lid geworden
1 okt 2006
Berichten
142
Hallo,

ik heb een VBA script geschreven voor het importeren van data vanuit de ene excelfile naar de andere.

Er rest mij echter nog 1 berekening die ik graag wil laten uitvoeren maar dit lukt vooralsnog niet.

Stel ik heb de volgende tabel op tab 1:
Code:
#########################################
    Col A    |    Col B    |    Col C    |    Col  D    |    Col E
ImageNr   |      22      |               |                 |
               |                |   waarde  |     false     |
               |                |   waarde  |     true      | 
               |                |   waarde  |     false     | 
               |                |               |                 |
ImageNr   |      27      |               |                 |
               |                |   waarde  |     false     |
               |                |   waarde  |     false     |  
               |                |   waarde  |     false     | 
               |                |   waarde  |     false     | 
ImageNr  |      32       |               |                 |
               |                |   waarde  |     false     |
               |                |   waarde  |     false     |
               |                |   waarde  |     true      | 
               |                |   waarde  |     true      |
Dan wil ik van deze tabel de ImageNr's in een array opslaan waarin er een waarde "true" is. In dit geval dus 22 en 32.

Dit array wil dan weer doorlopen op tab 2 met de volgende tabel:
Code:
  ImageNr  |  Col 1  |  Col 2  | Col 4  |
     22        |      4    |     2    |     3   |  
     27        |      1    |     1    |     1   |
     32        |       3   |     3    |     6   |
En dan wil ik bijvoorbeeld de Mean en de Max achterhalen van alle waardes in column 4 waarbij de ImageNr's in de array voorkomen.
Dus in dit geval Max is 6 en Mean is (3+6)/2 = 4.5.

Is dit op een enigszins eenvoudige manier te verwezenlijken?

Bedankt voor de hulp!
 
Laatst bewerkt:
Als ik het verhaal goed begrijp wel. Aangekomen op het tweede blad kijk je of de waarde op die regel voorkomt in je array en indien dat zo is voor je de extra berekening uit.

Ik zie hier echter verschillende stappen en je geeft niet echt aan waar je vastloopt, dus blijft het bij zeggen dat het wel kan.
 
Dank voor je snelle reactie.

Ik loop al in het begin vast moet ik toegeven, het opslaan van 'ImageNr' in een array onder de voorwaarde dat er een waarde "TRUE" is voordat de volgende ImageNr begint.
 
Heb je een klein voorbeeldfiletje waar we wat kunnen prutsen?

In principe is de oplossing gewoon door kolom "D" lopen totdat je een volgend imagenummer tegenkomt. Heb je in de tussentijd de waarde "true" gevonden sla je het nummer op, anders niet.
 
Ik was zo begonnen:
Code:
Dim ImageNrs() As Integer
    With wb1.Sheets("Tab1")
        For i = 35 To lastRowTab1
            If .Cells(i, "A") = "ImageNr" Then
                ImageNrs() = .Cells(i, "B")
            End If
        Next
    End With

Krijg ik nu een array met imagenr's? Want als ik ImageNrs in een msgbox zet krijg ik een type mismatch.
 
Als je in sheet1, kolom A geen lege waarden hebt kun je autofilter of uitgebreid filter voor jou het werk laten doen.
 
Heb je een klein voorbeeldfiletje waar we wat kunnen prutsen?

In principe is de oplossing gewoon door kolom "D" lopen totdat je een volgend imagenummer tegenkomt. Heb je in de tussentijd de waarde "true" gevonden sla je het nummer op, anders niet.

Ik ben eigenlijk wel voor deze oplossing. De code die ik nu heb haalt wel alle ImageNrs op, maar test nog niet of er voor het volgende ImageNr een waarde "TRUE" voorkomt in column D:

Code:
Dim ImageNrs() As Variant
ReDim ImageNrs(25 To lastRowTab1)

With wb1.Sheets("Tab1")
        For i = 25 To lastRowTab1
            If .Cells(i, "A") = "ImageNr" Then
                ImageNrs(i) = .Cells(i, "B")
            End If
        Next
    End With

Ik krijg nu dus alle images nummers terug. Hoe voeg ik nou een extra criteria? Met name het gedeelte dat de "TRUE" vóór de volgens ImageNr moet komen krijg ik niet ingebouwd.
 
Ik heb je code iets omgebouwd omdat ik het zelf moest nabouwen, maar zoiets:

Code:
Sub t()
    Dim imagenr As New Collection
    Dim found As Boolean
    found = False
    Dim activeimage As Long
    
    For i = 3 To [d5000].End(xlUp).Row
        If Cells(i, 1).Value = "ImageNr" Then
            If found = True Then
                imagenr.Add activeimage
            End If
            found = False
            activeimage = Cells(i, 2).Value
        Else
            If Cells(i, 4).Value = "true" Then
                found = True
            End If
        End If
    Next i
    If found = True Then
        imagenr.Add activeimage
    End If
End Sub
 
Thanks! Het werkt, echt knap bedacht.

Die laatste code na de "For" loop, die is om er voor te zorgen dat de laatste imagenr ook meegenomen wordt toch? Begrijp ik dat goed?

Code:
    Next i
    If found = True Then
        imagenr.Add activeimage
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan