• 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.

Waarde '0'vervangen door waarde uit andere cel

Status
Niet open voor verdere reacties.

zipje2007

Gebruiker
Lid geworden
17 jan 2008
Berichten
30
Dag,

In een Excel bestand wil ik graag de waarde '0' in de cellen van een kolom vervangen door de tekst uit de kolom header. Ik heb een voorbeeld bestandje bijgevoegd. Cellen in kolom B die een '0' bevatten, moeten in plaats daarvan de waarde 'Bob' krijgen, cellen in kolom C die een '0' bevatten moeten in plaats daarvan de waarde 'Bram', etc.
Het lukt met zoeken en vervangen, maar het werkelijke bestand is vele malen groter. Het is niet doenlijk om voor tig kolommen handmatig de actie uit te voeren. Geëxperimenteerd met SUBSTITUEREN en VERVANGEN, maar zie niet hoe ik van de kringverwijzingen af kom. Kan het met een formule?

Bij voorbaat veel dank.
 

Bijlagen

  • Voorbeeld.xlsx
    8,7 KB · Weergaven: 27
Hoe komt die '0' in de cellen?
 
Voor nu is het een platte waarde, het zou dus ook een 'x' of een 'ja' kunnen zijn.
Ik zou ook de oorspronkelijke draaitabel kunnen gebruiken. Daar is de '0' het resultaat van een berekening, minimum van een bepaalde bron. Zou in dit voorbeeld bijv. Min van 'Naam met B' kunnen zijn.
 
Kan met een macrootje:
Code:
Sub VervangNul()
Dim rng As Range
Dim i As Integer, j As Integer
    Set rng = Cells(2, 1).CurrentRegion
    For i = 2 To rng.Columns.Count
        For j = 2 To rng.Rows.Count
            If Cells(j, i).Value = 0 And Not Cells(j, i).Value = "" Then
                Cells(j, i).Value = Cells(1, i).Value
            End If
        Next j
    Next i
End Sub
 
Kan het met een formule?
Niet als er al een harde waarde in een cel staat. Je moet die waarde dan namelijk vervangen door een formule die op de eigen cel is gebaseerd. En dan krijg je altijd een kringverwijzing. Je zult dan dus voor elke kolom een hulpkolom moeten toevoegen. Ben je een stuk verder van huis.
 
Holy Macaroni, dat was snel. Macro doet 't fantastisch. Hartelijk dank. Topic mag op slot.
 
Ook nog eentje:)

Code:
Sub jvr()
 With Range("B2:E" & Range("A" & Rows.Count).End(xlUp).Row)
    .Value = Evaluate(Replace(Replace("if(len(%%),$$,"""")", "%%", .Address), "$$", .Offset(-1).Resize(1).Address))
 End With
End Sub
 
Het lukt met zoeken en vervangen, maar het werkelijke bestand is vele malen groter.
Al eens naar zoeken en vervangen speciaal gekeken?
  1. Selecteer het bereik
  2. Druk op <F5>
  3. Klik op Special
  4. Selecteer Constants
  5. Tik in dit geval in B2 =B$1
  6. Sluit af met <Ctrl> + <Enter>
  7. Eventueel de formules Kopiëren naar waarden
 
Nee, daar heb ik niet eerder naar gekeken, ik wist niet eens dat het bestond om eerlijk te zijn. Bedankt, dit 'nieuwtje' (voor mij althans) ga ik nog vaak kunnen gebruiken.
 
Ziet er in een macro zo uit:
Code:
Sub VenA()
  With Sheets("Blad1").Cells(1).CurrentRegion.Offset(1, 1).SpecialCells(2)
    .FormulaR1C1 = "=R1C"
    .Value = .Value
  End With
End Sub

De code van @OctaFish loopt cel voor cel af en is bij veel gegevens nogal traag. Merk je in jouw voorbeeldje niets van.:d
 
Of de ogenschijnlijk eenvoudige:

Code:
Sub M_snb()
  Cells(1).CurrentRegion.Name = "snb"
  [snb] = [if(isnumber(snb),index(snb,1,0),if(snb="","",snb))]
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan