Help!

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

Hulp bij posten

Recente topics

Auteur Topic: fout in als formule?  (gelezen 7054 keer)

0 leden en 1 gast bekijken dit topic.

Offline guy8780

  • Volledig lid
  • **
  • Berichten: 169
  • alles kan beter
fout in als formule?
« Gepost op: 22 december 2017, 10:25:34 »
Ik wil als er iets ingevuld wordt in een cel, in een andere cel de datum van de invoer laten verschijnen (en deze mag niet wijzigen).
Ik heb deze formule =ALS(C154>0;"=vandaag()";"") voorzien maar in plaats van de datum verschijnt =vandaag().
Vraag is of de O correct is? Vraag is waarom de datum niet verschijnt?
GWindows 7 Professional SP1 NLD 64bit
Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz 3301
1497
mv video hook driver2 0MB 1920 x 1080
High Definition Audio-apparaat
Nr: 1 Model: ST500DM002-1BD142 ATA Device
C:\ NTFS 465,76GB 397,79GB 8.081MB
AV: Geen antivirus geïnstalleerd
FW: Windows Firewal Enabled: True

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: fout in als formule?
« Reactie #1 Gepost op: 22 december 2017, 11:05:45 »
Hallo guy8780,

Er verschijnt =vandaag() omdat je in je formule =vandaag() tussen "haakjes" zet.
Tussen " " haakjes betekent voor Excel dat je invoer wordt weergegeven als text, niet als een formule.

Je zou de formule zo kunnen schrijven:

=ALS(C154>0;(VANDAAG());"")Je code geeft dan een getal dat voor excel een datumnotatie is, maar in de vorm van een serieel getal.

Een echte datum krijg je met volgende formule:

=ALS(C154>0;(DATUM(JAAR(VANDAAG());MAAND(VANDAAG());DAG(VANDAAG())));"")
Je grootste probleem zit echter bij je volgende eis:
en deze datum mag niet wijzigen
Als je in een formule verwijst naar een formule die zich automatisch wijzigt, dan zal de eerste formule zich ook wijzigen.
Deze wordt namelijk steeds herberekend.
Je kan dit opvangen met een kleine macro, die wordt uitgevoerd bij het sluiten van het werkblad, of beter nog bij het veranderen van het werkblad.
In die macro kan je de kolom met datums ("C:C") laten kopiëren en terug plakken als Waarde.
Dan zal de datum niet meer herberekend worden. Maar je kan dan al even snel gewoon handmatig de datum invoeren, denk ik...? :-\

Mogelijk hebben de specialisten hier een betere oplossing... :-\

:) 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 plongske

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: fout in als formule?
« Reactie #2 Gepost op: 22 december 2017, 11:36:53 »
Met de toetsen ctrl+; wordt de datum van vandaag statisch ingevuld in een cel.
Groeten plongske

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: fout in als formule?
« Reactie #3 Gepost op: 22 december 2017, 11:58:12 »
Hallo plongske,

Dank voor het meedenken.
Met de toetsen ctrl+; wordt de datum van vandaag statisch ingevuld in een cel.
Dat komt overeen met
Maar je kan dan al even snel gewoon handmatig de datum invoeren, denk ik...?
maar dan sneller en zonder fouten?

In de =ALS() formule kan je zo iets niet integreren?

:) 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 plongske

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: fout in als formule?
« Reactie #4 Gepost op: 22 december 2017, 12:04:58 »
Citaat
In de =ALS() formule kan je zo iets niet integreren?
nee maar als je toch aan het invullen bent is dit wel een snelle mogelijkheid.
anders zal het inderdaad via VBA (macro)moeten gebeuren.
Groeten plongske

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: fout in als formule?
« Reactie #5 Gepost op: 22 december 2017, 12:45:38 »
Hallo,

Een kort stukje code lijkt inderdaad de beste werkwijze.

Je kan dit opvangen met een kleine macro, die wordt uitgevoerd bij het sluiten van het werkblad, of beter nog bij het veranderen van het werkblad.
In die macro kan je de kolom met datums ("C:C") laten kopiëren en terug plakken als Waarde.

Je kan ook onmiddellijk de datum neerzetten zonder extra kopieeropdracht :
Range("C2") = DateEnkel nog zorgen dat de code wordt uitgevoerd bij wijziging in de voorziene range, en klaar.

Mvg,
pitufo

"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline plongske

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: fout in als formule?
« Reactie #6 Gepost op: 22 december 2017, 22:49:16 »
@pitufo
Als VBA leek moet ik dit lezen als : is er iets ingevuld in C2 dan wordt  als voorbeeld in  cel K2(als deze cel is geactiveerd) de datum van vandaag geplaatst?
Groeten plongske

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: fout in als formule?
« Reactie #7 Gepost op: 22 december 2017, 23:09:11 »
Hallo plongske,

Ja, maar K2 moet niet geactiveerd staan.

Zo iets als macro:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("C2").Value > 0 Then
Range("K2") = Date
End If
End Sub

Je kan ook op rijen werken, ongeveer zo:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 3 Then
        ThisRow = Target.Row
        If Target.Value > 0 Then
           Range("K" & ThisRow) = Date
        End If
End Sub

Groeten,

:) 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 plongske

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: fout in als formule?
« Reactie #8 Gepost op: 22 december 2017, 23:30:37 »
Of topic
Citaat
Als VBA leek moet ik dit lezen als : is er iets ingevuld in C2 dan wordt  als voorbeeld in  cel K2(als deze cel is geactiveerd) de datum van vandaag geplaatst?
Blijkbaar niet. :-[
Dus heb ik nog veel bij te leren.
Bedankt voor de code.
Groeten plongske

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: fout in als formule?
« Reactie #9 Gepost op: 22 december 2017, 23:40:01 »
Hallo plongske,

je stelling was juist :thumbsup:
Enkel, in de macro schrijf je welke cel een "waarde" krijgt als de waarde in een andere cel groter is dan 0.
Zoals je op een werkblad de formule =ALS() zou gebruiken.
=Als (C2>0; K2 = Date; "")
Als "C2" groter is dan nul dan wordt de waarde in "K2" de datum van vandaag.
In de macro:
If Range("C2").Value > 0 Then
   Range("K2") = DATE     
EndIf

:) 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 pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: fout in als formule?
« Reactie #10 Gepost op: 23 december 2017, 10:15:29 »
@ plongske,
Sorry voor het even uitblijven van een reactie (kom pas nu terug in de buurt van mijn pc'tje).
Met dank aan SoftAid ben je inmiddels gelukkig mee met die code.

@ SoftAid,
Ik ging de procedure waarschijnlijk op identieke wijze geschreven hebben als jij, alleen ontbreekt er één (gewoon vergeten, gok ik dan) regel :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 3 Then
        ThisRow = Target.Row
        If Target.Value > 0 Then
           Range("K" & ThisRow) = Date
        End If
    End If
End Sub

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: fout in als formule?
« Reactie #11 Gepost op: 23 december 2017, 10:31:56 »
Hallo Pitufo,

een If zonder End If mag ik zo maar niet vergeten, fout van mij  :-[.
Als ik de code getest had dan had ik een foutmelding gekregen...  :default_thumpdown:

Bedankt voor de terechte rechtzetting.

Groeten,

:) 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 alfa

  • Lid
  • *
  • Berichten: 83
  • Oplossing.be
Re: fout in als formule?
« Reactie #12 Gepost op: 23 december 2017, 10:48:51 »
Je kunt eventueel verkorten tot:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Column = 3 And .Value > 0 Then
.Offset(, 8) = Date
End If
End With
End Sub

guy8780,
wat betreft je vraag: wil je alleen in C154 controleren of de waarde > 0 is of in meerdere cellen. Zo ja, welke cellen/kolom(men)? En wat is/wat zijn de cel(len) waarin (indien van toepassing) de datum moet komen te staan?
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: fout in als formule?
« Reactie #13 Gepost op: 23 december 2017, 12:49:37 »
@ SoftAid,

een If zonder End If mag ik zo maar niet vergeten
In deze periode waarin we allemaal meer dan anders tot vergevingsgezindheid geneigd zijn (goede gelegenheid overigens om aan iedereen welgemeend mijn allerbeste wensen voor een voorspoedig 2018 te betuigen !!!) vind ik het allesbehalve erg  ;) , temeer omdat ik hier zelf ook al meermaals in de rapte ongeteste code heb gepost...  :(

@ alfa,
Dat klopt, maar anderzijds kunnen we dit op minstens een dozijn keer een dozijn manieren schrijven, en tevens de vraag naar de meerwaarde stellen.
Als je er dan toch een "om ter kortst"-competitie wil van maken ben ik bereid EENMALIG mee te spelen  :D
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Value > 0 Then Target.Offset(, 8) = Date
End Sub
Wat ik me evenwel meestal afvraag is : kan de gemiddelde TS nog volgen, en desgevallend zelf aanpassingen aanbrengen.
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: fout in als formule?
« Reactie #14 Gepost op: 23 december 2017, 13:39:59 »

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Value > 0 Then Target.Offset(, 8) = Date
End Sub


Met End If ???  0:-)  0:-)

:) 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 !

 


www.combell.com