Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Row & Column vinden van unieke cel  (gelezen 1279 keer)

0 leden en 1 gast bekijken dit topic.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Row & Column vinden van unieke cel
« Gepost op: 06 juni 2022, 20:27:20 »
Hallo,

Ik "struggle" soms met simpele zaken.....

In een macro zou ik graag de Row en Column te pakken krijgen van een cel met één bepaalde Unieke waarde (als Variabele) in een Range.

X = 1 to 5
aantal = WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(1, 10)), X)
rijn = (Range(Cells(1, 5), Cells(1, 10)).Find(X).Row        'Variabele X staat op Row ??
kol = (Range(Cells(1, 5), Cells(1, 10)).Find(X).column    'Variabele X staat op Kolom ??

Het zal wel simpel zijn, ongetwijfeld...  :-[

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Row & Column vinden van unieke cel
« Reactie #1 Gepost op: 06 juni 2022, 21:59:18 »
SoftAid, laat ff weten wat je precies voor ogen hebt. Je vraagt namelijk iets uit regel 1 dus de "rijn" zal altijd 1 moeten worden. Die "kol" zou moeten werken volgens mij. Maar wat de berekening van de variabele "aantal" er dan weer bij doet???
Ik heb in elk geval een klein voorbeeldje aangemaakt met wat ik er tot nu toe van begrijp. ;)
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Row & Column vinden van unieke cel
« Reactie #2 Gepost op: 06 juni 2022, 22:20:19 »
En dan gelijk 1 erbij met de Find functie zoals jij die gebruikt had...
Maar omdat ik dus niet weet wat je er verder mee wil doen, vraag ik me af of dit nu juist is wat je voor ogen hebt.
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Row & Column vinden van unieke cel
« Reactie #3 Gepost op: 07 juni 2022, 02:34:47 »
Hallo Leo,

Met die functie Match zal het wel lukken.
sorry voor de bedroevende uitleg, als ik het nu zelf nalees dan krijg ik er ook een punthoofd van.

De bedoeling is dat de macro in een vastgestelde range gaat zoeken naar een uniek nummer, en daar iets mee doet. Opmaak bvb.

Nu kreeg ik het klaar om dat uniek nummer (dat varieert) te vinden, maar daarmee wis ik de locatie nog niet om de betreffende cel met het uniek nummer terug te vinden.

zo zou het moeten werken:

Sub Geef_Rij_en_Kolom()

    For X = 1 To 5
        aantal = WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(1, 10)), X)
        If aantal = 1 Then
        gevonden = Application.Match(X, Range(Cells(1, 5), Cells(1, 10)), 0)
        If IsError(gevonden) Then gevonden = "0 (niet gevonden)"
        Range(Cells(Split(gevonden,"$" 2)), Cells(Split (gevonden,"$" 1)).Select  'fout met haakjes op deze regel
       
        'With Selection......
    Next X

End Sub

Maar ik krijg die gevonden niet gesplitst om de range te bepalen: foutmelding >:(

Bedankt en goede nacht morgen  ;D

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Row & Column vinden van unieke cel
« Reactie #4 Gepost op: 07 juni 2022, 09:05:31 »
Hallo SoftAid,

Eén ding staat vast: ik snap het ook nog niet.
Citaat
Maar ik krijg die gevonden niet gesplitst om de range te bepalen
Ik had de indruk dat je een waarde zocht die maar één maal voorkomt. Zoek je dan niet gewoon één cel? En dan is het inderdaad simpel.

Volgens mij zat je met je eerste aanzet al op een beter spoor, alleen was het niet helemaal goed geschreven. Let op met "find", hier kan je beter als extra parameter meegeven dat naar de volledige celinhoud moet gekeken worden.
Kijk eens of je hiermee verder komt:
Sub Geef_Rij_en_Kolom()

For x = 1 To 5
  aantal = WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(1, 10)), x)
  If aantal = 1 Then
    rij = Range(Cells(1, 5), Cells(1, 10)).Find(x, , , xlWhole).Row
    kol = Range(Cells(1, 5), Cells(1, 10)).Find(x, , , xlWhole).Column
  End If
Next x

End Sub

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Warme bakkertje

  • Volledig lid
  • **
  • Berichten: 215
  • Geslacht: Man
Re: Row & Column vinden van unieke cel
« Reactie #5 Gepost op: 07 juni 2022, 09:46:57 »
Aangezien je iets wil doen met gevonden unieke waarde.

Sub Geef_Rij_en_Kolom()
    Set myrange = Cells(1, 5).Resize(, 6)
    X = Application.InputBox("Geef het te zoeken nummer in.", "Zoekfunctie", , , , , , 1)
    If Application.CountIf(myrange, X) = 1 Then
        With Range(myrange.Find(X, , , xlWhole).Address)
            .Interior.Color = vbRed 'do something
        End With
    Else
        MsgBox "Dit nummer is niet gevonden of niet uniek."
    End If
End Sub
Windows 10 Home   NLD 64bit

Microsoft Office Professional Plus 2016 US

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Row & Column vinden van unieke cel
« Reactie #6 Gepost op: 07 juni 2022, 11:49:58 »
Hallo Warm bakkertje,

Je aangeboden code zal zeker werken, maar wijkt iets te veel af van waar ik mee bezig ben.
Maar ik haal er wel weer veel kennis van op  :thumbsup:

Hallo Molly,

Ja, dat is wat ik zoek (zocht) en voldoet prima  :). Parameters voor Find() zullen niet nodig zijn, er komen enkel en altijd cijfers van 1 tot en met 9 in de cellen van de range, dus daar moet ik echt niet in gaan beperken.

Leo, je oplossing zal ook wel werken, als ik de bijkomende code kan plaatsen die aansluit op jou Match() .
Uit de regel:
If IsEmpty(gevonden) Then gevonden = "$0$0"maak ik op dat Match() de Row en de Column ophaalt als één aaneengesloten tekst, die dan nogmaals moet gesplitst worden als je bvb de Row er uit wil halen.

Dan lijkt voor wat ik er mee wil doen het voorstel van Molly toch eenvoudiger voor een simpele geest als ik  ;D

Heel erg bedankt, allen!
als ik terug vastloop op iets dan weet ik jullie te vinden  8)

Groetjes,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Warme bakkertje

  • Volledig lid
  • **
  • Berichten: 215
  • Geslacht: Man
Re: Row & Column vinden van unieke cel
« Reactie #7 Gepost op: 07 juni 2022, 14:15:22 »
Citaat
De bedoeling is dat de macro in een vastgestelde range gaat zoeken naar een uniek nummer, en daar iets mee doet. Opmaak bvb.

Je zegt dat er enkel cijfers zullen staan van 1 tot 9 en met een uniek nummer in die reeks wil je iets doen, dus waarom zou je rijnummer en kolomletter apart nodig

hebben.

In de bijlage is 1 het unieke nummer.

Sub Geef_Rij_en_Kolom()
    Set myrange = Cells(1, 5).Resize(6, 6)
    For X = 1 To 9
        If Application.CountIf(myrange, X) = 1 Then
            With Range(myrange.Find(X, , , xlWhole).Address)
                .Interior.Color = vbRed 'do something
            End With
        End If
    Next
End Sub

PS: Application.Match geeft enkel de positie weer van een gezocht item. Dus ofwel een rij indien gezocht wordt in een kolom of kolomnummer indien

gezocht wordt in een rij. Je moet er wel op letten dat Match de positie weergeeft in de reeks en niet noodzakelijk het rijnummer op je werkblad.

Zal het proberen te verduidelijken met een voorbeeld. Stel dat je bij Match een zoekrange opgeeft van A2 tot A10.

Het op te zoeken nummer staat in cel A2 dus rijnummer 2. Match zal echter 1 weergeven omdat cel A2 de 1ste positie is in de zoekrange.

Dus om het rijnummer in je werkblad te verkrijgen zal je er 1 moeten bijtellen ofwel de volledige kolom opgeven als zoekrange.
Windows 10 Home   NLD 64bit

Microsoft Office Professional Plus 2016 US

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Row & Column vinden van unieke cel
« Reactie #8 Gepost op: 07 juni 2022, 14:44:40 »
Hallo Warm bakkertje,

dank om er over mee te denken.

Je vraagt: waarom zou je de rij en kolom nodig hebben (die cel waar de gevonden unieke waarde staat).
Wel, als ik zo een cel gevonden wordt, dan wil ik die uitbreiden (resize) en die "resised range" dan Samenvoegen (Merge)
Dat kan ik niet met enkel het .Address, dus in de With - End With procedure ...
Ik heb dan echt de Rij- en Kolom-nummers nodig, niet?

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 197
  • Geslacht: Man
  • Oplossing.be
Re: Row & Column vinden van unieke cel
« Reactie #9 Gepost op: 07 juni 2022, 15:11:22 »
Volgens mij kun je prima vanuit een celadres, bv Z34 een riseze doen:

Range("Z34").Resize(,5).Merge
|-|aije

ik gebruik Office 2016 Professional Plus

Offline Warme bakkertje

  • Volledig lid
  • **
  • Berichten: 215
  • Geslacht: Man
Re: Row & Column vinden van unieke cel
« Reactie #10 Gepost op: 07 juni 2022, 15:18:35 »
Zoals Haije al aangaf.

Sub Geef_Rij_en_Kolom()
    Set myrange = Cells(1, 5).Resize(6, 6)
    For X = 1 To 9
        If Application.CountIf(myrange, X) = 1 Then
            With Range(myrange.Find(X, , , xlWhole).Address)
                With .Resize(3, 5)
                    .Interior.Color = vbRed 'do something
                End With
            End With
        End If
    Next
End Sub

Uitbreiding met 3 rijen en 5 kolommen.
Windows 10 Home   NLD 64bit

Microsoft Office Professional Plus 2016 US

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Row & Column vinden van unieke cel
« Reactie #11 Gepost op: 07 juni 2022, 15:28:57 »
Hallo Haije,

ik heb nog geen celadres, behalve als dat er uit te halen is met .Address
Dat was mijn vraag.

@ Warm bakkertje,

ik zal die genestte .With --> End With eens proberen.

@ Allen,

sorry dat ik het PROBEER zelf op te lossen met jullie hulp, als ik een voorbeeldbestand van de werkelijk complexe situatie voorleg, dan wordt ik heel zeker goed geholpen, maar dan leer ik er verder niets uit. Ik zal de code zelfs niet kunnen lezen.
Ik heb het echt nodig om stapje per stapje te leren (begrijpen) om tot enige kennis te komen, en dan daar verder mee te werken in de vervolg-projecten die daar op gebaseerd zijn.

Dank voor de voorzetten  :-*

:) SoftAid :)             
 
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Row & Column vinden van unieke cel
« Reactie #12 Gepost op: 07 juni 2022, 15:58:15 »
Warm bakkertje,

die With .Resize    ...... dat werkt niet bij mij hoor.

Ik ga alle opties nog eens naast elkaar leggen, en zien of ik...het licht zie.

Tot straks misschien.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Row & Column vinden van unieke cel
« Reactie #13 Gepost op: 07 juni 2022, 16:49:50 »
r = rijnummer
k = kolomnummer

Sub jec()
 Dim sp, r As Long, k As Long
 With Range("E1:J6")
   sp = Split(Evaluate(Replace("text(max(if(countif(#,#)=1,row(#)*100+column(#),1)),""00C00"")", "#", .Address)), "C")
   r = Val(sp(0))
   k = Val(sp(1))
 End With
End Sub

Principe is eigenlijk onderstaande formule.
Als je die plakt zie je R06C10 als uitkomst (betekent Rij 6 en kol 10)

=TEXT(MAX(IF(COUNTIF(E1:J6;E1:J6)=1;ROW(E1:E6)*100+COLUMN(E1:J1);1));"R00C00")
En als je de waarde zou willen zien van dat specifieke adres (misschien dat je dit ooit kan gebruiken):
=INDIRECT(TEXT(MAX(IF(COUNTIF(E1:J6;E1:J6)=1;ROW(E1:E6)*100+COLUMN(E1:J1);1));"R00C00");)

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Row & Column vinden van unieke cel
« Reactie #14 Gepost op: 07 juni 2022, 17:10:53 »
Hallo,

Ben er enkele uurtjes tussenuit geweest. Ondertussen snap ik opnieuw niet meer waar dit allemaal heen gaat. Alles wat er nog aan toegevoegd is zal wel kloppen (heb niet alles in detail bekeken), maar volgens mij te ver gezocht.

@ SoftAid,

Eerder gaf je toch aan dat mijn methode volstond om de juiste cel te vinden. Voor een daaropvolgende resize en merge heb je maar één extra instructie nodig:
Sub Geef_Rij_en_Kolom()

For x = 1 To 5
  aantal = WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(1, 10)), x)
  If aantal = 1 Then
    rij = Range(Cells(1, 5), Cells(1, 10)).Find(x, , , xlWhole).Row
    kol = Range(Cells(1, 5), Cells(1, 10)).Find(x, , , xlWhole).Column
    Cells(rij, kol).Resize(onder, rechts).Merge
  End If
Next x

End Sub

Vermoedelijk krijg je bij merge wel nog een waarschuwing; die kan je nog vermijden, maar daar kan ik me verder niet over uitspreken want hangt af van je doelstellingen.

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

 


www.combell.com