Het kan in ieder geval metquote:Op dinsdag 7 november 2017 14:57 schreef nils7 het volgende:
Hi allen
Win 10, Excel 2016
Ik zit met een datum probleem.
Mijn excel staat op NL maar mijn datafeed (CSV bestand) is US format in een NOW() timestamp (datum + tijdstip).
Nu kan ik dit met left en rights best omzetten naar een NL format maar dat lukt me niet omdat hij het volgende US timestamp "11/01/17 00:33" ziet als "42746" als ik hem benader met een left.
Dat ziet hij dus als de NL 11 januari, maar dus eigenlijk 1 november is.
In dezelfde kolom staat dus ook een US "10/31/2017 11:36:53 PM" daar kan hij dus geen NL datum van maken dus mijn Left(timestamp,10) is dus ook gewoon 10/31/2017 als TEXT.
Ik zou dit graag met een formule op willen lossen, waar google vaak met formatting of left/right/mid oplossingen komt. Kom ik hier niet aan uit.
Iemand een idee?
[edit]
Deze oplossing werkt niet:
https://stackoverflow.com(...)o-european-date-date
Nee mag best met Left en Mids maar kreeg het er niet uit.quote:Op dinsdag 7 november 2017 16:30 schreef Janneke141 het volgende:
[..]
Het kan in ieder geval met
=DATE(MID(A1;4;2);LEFT(A1;2);MID(A1;7;2)+2000)
Misschien is er wel een charmantere oplossing, maar die ken ik ook niet. Waarom wil je eigenlijk een oplossing zonder LEFTs en MIDs?
Opgenomen macro's zijn niet zo geschikt om flexibel te maken, daar er harde verwijzingen in komen (A1 etc.). (Maar wel handig om even snel iets te bedenken en te kijken welke methodes er zijn.)quote:Op woensdag 8 november 2017 21:46 schreef langverhaal het volgende:
Aanvulling op mijn bovenstaande vraag; ik heb een macro opgenomen, maar bij uitvoer doet deze precies wat ik ervan verwacht, namelijk op de rij waar ik de macro opnam de waarden wegschrijven.
Hoe pas ik deze macro aan zodat deze wegschrijft vanuit de cel die op dat moment is geselecteerd?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Sub Macro1() Dim SheetnaamBron As String Dim SheetnaamDoel As String SheetnaamBron = "Sheet2" SheetnaamDoel = "Sheet1" Dim Rij As Long Dim Kolom As Long 'data uit 5 kolommen, 1 rij over te halen Rij = 1 Kolom = 5 For j = 1 To Rij 'Insert Row Above Row 2 'met bijv kolomnamen op eerste rij Sheets(SheetnaamDoel).Rows(2).Insert Shift:=xlDown, _ CopyOrigin:=xlFormatFromLeftOrAbove 'or xlFormatFromRightOrBelow 'dan door kolommen wandelen. For i = 1 To Kolom '+0 aanpassen in geval van offset op bron sheet Sheets(SheetnaamDoel).Cells(2, i).Value = Sheets(SheetnaamBron).Cells(j + 0, i + 0).Value Next i Next j End Sub |
Misschien kun je iets met de functie VERGELIJKEN()quote:Op woensdag 15 november 2017 11:23 schreef edward_v het volgende:
Goedemorgen,
in het verre verleden heb ik redelijk wat met Excel gedaan maar helaas is veel kennis verdwenen.
Ik zit met het volgende:
Ik heb twee sheets met data. Ik wil kolommen in sheet 1 met kolommen in sheet 2 vergelijken.
Oftwel:
komt waarde voor in kolom 1 en in kolom 2 dan ja en indien niet dan nee.
Is zoiets te gieten in een formule?
en die waardes moeten wel gelijk zijn?quote:Op woensdag 15 november 2017 11:23 schreef edward_v het volgende:
Goedemorgen,
in het verre verleden heb ik redelijk wat met Excel gedaan maar helaas is veel kennis verdwenen.
Ik zit met het volgende:
Ik heb twee sheets met data. Ik wil kolommen in sheet 1 met kolommen in sheet 2 vergelijken.
Oftwel:
komt waarde voor in kolom 1 en in kolom 2 dan ja en indien niet dan nee.
Is zoiets te gieten in een formule?
1 | =IF(Sheet1!B3=Sheet2!B3;TRUE;FALSE) |
waar staat die b3 voor in dit geval?quote:Op woensdag 15 november 2017 12:05 schreef mschol het volgende:
[..]
en die waardes moeten wel gelijk zijn?
volstaat dan niet het volgende:
[ code verwijderd ]
geen nederlandse variant beschikbaar, dus nederlandse commando's moet je even uitzoeken.. Echt, welke idioot maakte daar ooit nederlandse functienamen voor
De cel op het werkblad (respectievelijk werkblad 1 en werkblad 2 in mijn voorbeeld, waar je de daadwerkelijke naam van moet gebruiken)quote:Op woensdag 15 november 2017 12:27 schreef edward_v het volgende:
[..]
waar staat die b3 voor in dit geval?
1 | =IF(jantje!A3=pietje!D10;TRUE;FALSE) |
wat als ik alle waarden uit kolom a met alle waarden in kolom b wil vergelijken.quote:Op woensdag 15 november 2017 12:28 schreef mschol het volgende:
[..]
De cel op het werkblad (respectievelijk werkblad 1 en werkblad 2 in mijn voorbeeld, waar je de daadwerkelijke naam van moet gebruiken)
dus als je werkbladen jantje en pietje heten en je cellen A3 en D10 moet vergelijken wordt het:
[ code verwijderd ]
de cel waarin je deze formule plaatst toont het resultaat
Met MATCH, COUNTIF of VLOOKUP kan je bepalen of een bepaalde waarde voorkomt in een een kolom. Als je wil weten of die waarde voorkomt in zowel kolom A als B, dan kan je er nog een AND eromheen plaatsen.quote:Op woensdag 15 november 2017 13:10 schreef edward_v het volgende:
[..]
wat als ik alle waarden uit kolom a met alle waarden in kolom b wil vergelijken.
oftewel komen ze zowel voor in a en b dan true. maakt niet uit welk positie
Excel rekent met tijden alsof het fracties van 24 zijn. De tijd '12:00' ziet Excel dus als 0,5, omdat het de helft van een etmaal (24) is.quote:Op vrijdag 5 januari 2018 12:24 schreef gekkie000000 het volgende:
Hallo, beginnersvraagje
Ik ben een excel aan het maken om de gewerkte uren van mijn vriend in bij te houden.
Ik heb diverse kolommen gemaakt zoals gewerkte uren , verlof, storingsuren etc. Het optellen werkt ook door de (u):mm:ss.
Nu wil ik een kolom waarin de overuren automatisch berekend worden. Dus kolom werkuren bevat bijvoorbeeld de waarde 11:30, en dan zou kolom overuren moeten worden :
waarde kolom werkuren - 8 uur (standaard werkdag), maar ik krijg het niet voor elkaar.
Iemand die me op weg kan helpen zonder dat ik een extra kolom hoef te maken?
Alvast bedankt!
Oh super, bedankt voor de uitleg! Ik ga het proberen.quote:Op vrijdag 5 januari 2018 12:29 schreef Janneke141 het volgende:
[..]
Excel rekent met tijden alsof het fracties van 24 zijn. De tijd '12:00' ziet Excel dus als 0,5, omdat het de helft van een etmaal (24) is.
Als je in een of andere cel een tijdsduur hebt gezet en je wil daar acht uur vanaf halen, dan zul je er dus het getal 8/24 vanaf moeten halen. D.w.z.: als in A1 de tijd '11:30' is ingevoerd, en in cel B1 zet je de formule =A1-8/24, en de celopmaak van B1 is ook 'tijd', dan komt er 03:30 in te staan.
Alleen nu wil ik het bestand wel op kunnen slaan zonder dat ik de cellen moet vullen Hoe doe ik dat? Ik las al iets dat je bijvoorbeeld cel A100 Skipip noemt, en dan onderstaande macro gebruikt dus als je bijvoorbeeld in A100 "TRUE" zet, hij dan hem leeg op slaat:quote:Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Application.Sheets("form").Range("B14").Value = "" Then
Cancel = True
MsgBox "B14 is empty"
End If
If Application.Sheets("form").Range("B15").Value = "" Then
Cancel = True
MsgBox "B15 is empty"
End If
If Application.Sheets("form").Range("B16").Value = "" Then
Cancel = True
MsgBox "B16 is empty"
End If
If Application.Sheets("form").Range("B19").Value = "" Then
Cancel = True
MsgBox "B19 is empty"
End If
If Application.Sheets("form").Range("B27").Value = "" Then
Cancel = True
MsgBox "B27 is empty"
End If
If Application.Sheets("form").Range("B28").Value = "" Then
Cancel = True
MsgBox "B28 is empty"
End If
If Application.Sheets("form").Range("B30").Value = "" Then
Cancel = True
MsgBox "B30 is empty"
End If
If Application.Sheets("form").Range("B32").Value = "" Then
Cancel = True
MsgBox "B32 is empty"
End If
If Application.Sheets("form").Range("B39").Value = "" Then
Cancel = True
MsgBox "B39 is empty"
End If
End Sub
Gefeliciteerd, altijd goed om je in deze materie te verdiepen.quote:Op donderdag 11 januari 2018 15:07 schreef Zocalo het volgende:
Ik heb mijn eerste macro ooit gebouwd, jeej
Ja prima methode om zo de zaak te bypassen.quote:[..]
Alleen nu wil ik het bestand wel op kunnen slaan zonder dat ik de cellen moet vullen Hoe doe ik dat? Ik las al iets dat je bijvoorbeeld cel A100 Skipip noemt, en dan onderstaande macro gebruikt dus als je bijvoorbeeld in A100 "TRUE" zet, hij dan hem leeg op slaat:
...
Maar ik krijg die niet werkend. Waar zou deze moeten? Of iemand anders een idee?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-beforesave-event-excel Dim strSheet As String Dim arrRange() As String Dim result As String strSheet = "Sheet1" arrRange = Split("B14,B15,B16,B27,B30,B32", ",", -1, vbTextCompare) 'eerst kijken of er geskipt moet worden If Bypass Then Cancel = False Exit Sub Else 'anders mogen de cellen gechecked worden For Each Item In arrRange If CheckFilledCells(strSheet, CStr(Item)) Then 'één of meerdere cellen zijn niet ingevuld Cancel = True If result = "" Then 'eerste item result = Item Else result = Item & ", " & result End If End If Next Item If Not result = "" Then MsgBox "empty item(s) in: " & result & vbCrLf & _ "Fill these in to be able to save sheet" End If End If End Sub '----------------------------------------------------------------------- Private Function CheckFilledCells(sheetname As String, strRange As String) As Boolean Dim Mytest As String Mytest = Application.Sheets(sheetname).Range(strRange).Value If Mytest = "" Then CheckFilledCells = True End Function '----------------------------------------------------------------------- Private Function Bypass() As Boolean Dim Skip As Boolean Skip = Range("Skipit").Value Debug.Print "SKIP", Skip If Skip Then Bypass = True 'reset naar niks, of beter FALSE Range("Skipit").Value = False End If End Function |
1 2 | Dim strSheet As String strSheet = "Sheet1" |
1 2 | Dim arrRange() As String arrRange = Split("B14,B15,B16,B27,B30,B32", ",", -1, vbTextCompare) |
1 2 | For Each Item In arrRange Next item |
1 | Private Function CheckFilledCells(sheetname As String, strRange As String) As Boolean |
Wow, wat een uitleg Super bedankt! Ik had het inmiddels wel werkend gekregen maar had al zo'n vermoeden dat het in te korten viel Ik wou dat ik dit allemaal 5 jaar geleden al geleerd had, maar je bent nooit te oud om te leren...quote:Op donderdag 11 januari 2018 20:44 schreef The_vice het volgende:
Wellicht meer dan je als antwoord op had gehoopt, maar ik zou willen dat ik dit allemaal had geweten toen ik net begon met programmeren.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Range("Skipit").Value = "TRUE" Then 'indien skipit == 'true' Range("Skipit").Value = "" 'maak leeg zodat deze leeg is bij het opslaan. De volgende keer moet je weer 'true' in die cel zetten Exit Sub 'je hoeft niets te controleren, we laten toch al toe dat er opgeslagen wordt End If Dim cell As Range, msg As String 'altijd variabelen declareren, dan helpt de editor je For Each cell In Application.Sheets("form").Range("A1,A3,A4") 'voeg hier de cellen toe, gescheiden met komma If IsEmpty(cell.Value) Then 'als cell leeg is dan ... msg = msg & ", " & cell.Address(False, False) 'voeg zijn adres toe aan de 'msg' string End If Next cell 'loop door alle cellen in bovenstaande lijstje If Len(msg) > 0 Then 'indien cellen gevonden, melding geven MsgBox Mid(msg, 2) & " empty, please fill in to continue" Cancel = True 'je mag niet opslaan End If End Sub |
Dat kan wel, maar dat gaat je een paar hulpkolommetjes kosten.quote:Op zondag 28 januari 2018 09:46 schreef Blue_note het volgende:
Ik heb een Excel bestand waarbij op tab 2 t/m 15 in kolom A tekst staat. Het aantal rijen waarin tekst staat is per tab anders en kan veranderen.
Ik zou graag op tab 1 een overzicht maken van al die kolom A teksten die op de tabs 2 t/m 15 staan.
Ik snap dat je kan celverwijzen, maar dat is statisch. Het liefst zou ik een overzicht maken waarbij rekening wordt gehouden met het aantal gevulde rijen en er in het overzicht geen witregels tussen komen.
Iemand een idee voor een oplossing?
Thanks. Eens even mee spelen. Gevaar zit hem erin dat er dan veel geknoopt wordt. Blad2 t/m 15 kan in theorie ook t/m 50 gaan worden.quote:Op zondag 28 januari 2018 09:57 schreef Janneke141 het volgende:
[..]
Dat kan wel, maar dat gaat je een paar hulpkolommetjes kosten.
In steno een oplossing die werkt:
- Maak een blad16 waarop je een rijtje maakt met AANTALARG(A:A)-functies voor ieder werkblad van 2 t/m 15
- Op Blad1 in A1 zet je de tekst 'Blad2'
- Ernaast in B1 zet je een 1
- Nu ga je in de rijen daar beneden de celwaarde erboven vergelijken met het totaal aantal regels op het betreffende werkblad. Zo lang dat niet is bereikt gaat de teller telkens 1 omhoog en blijft de bladnaam hetzelfde. Beetje klooien met ALS-functies en VERT.ZOEKEN.
- In kolom C kun je nu met een combinatie van INDEX en INDIRECT je celwaardes van al die bladen oplepelen.
Behalve dan dat je op het 'telblad' voor ieder blad dat erbij komt handmatig nieuw regeltje moet maken, zie ik niet wat er misgaat. Alleen wordt het hele spul natuurlijk wel trager als het aantal bladen en regels oploopt.quote:Op zondag 28 januari 2018 10:17 schreef Blue_note het volgende:
[..]
Thanks. Eens even mee spelen. Gevaar zit hem erin dat er dan veel geknoopt wordt. Blad2 t/m 15 kan in theorie ook t/m 50 gaan worden.
Ben bang dat verknopingen naar verloop van tijd dan misgaan, niet?!
Blad0 wordt dan je hulpsheet, Blad1 geeft je het overzicht.quote:Op zondag 28 januari 2018 10:17 schreef Blue_note het volgende:
[..]
Thanks. Eens even mee spelen. Gevaar zit hem erin dat er dan veel geknoopt wordt. Blad2 t/m 15 kan in theorie ook t/m 50 gaan worden.
Ben bang dat verknopingen naar verloop van tijd dan misgaan, niet?!
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |