SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Bij macro's die een bepaalde, merkbare, tijd nodig hebben om hun werk te doen is het van belang de gebruiker een idee te geven van wat er gebeurt, zeker met macro-optimalisatie aan kan het lijken alsof Excel is vastgelopen. Je kan bijvoorbeeld de statusbar een waarde geven, met eventueel een percentage van de reeds uitgevoerde code.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Mooi, grappig en cool
Een uitgebreide site met nuttige en minder nuttige excelsheetjes. Van kekke grafieken om je manager of leraar te betoveren via oscillogrammen en simulatoren tot pong voor als het weer een typische vrijdagmiddag is: Excelunusual
Verder
Alle vorige topics zijn hier terug te vinden.
Nieuw topic? Haal de OP uit de wikiIt's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
quote:Op maandag 18 juni 2012 12:42 schreef xyntarsus het volgende:
thx voor de hulp.
kan dit trouwens ook zonder dat ik het menu krijg (dat ie automatisch cel B2 pakt?)
Of als je alle sheets van je workbook in 1 keer wilt doen:quote:Op maandag 18 juni 2012 13:09 schreef qu63 het volgende:
[..]
Dan krijg je
[code]
Sub fok()
If Range("B2").Value <> "" Then ActiveSheet.Name = Range("B2").Value
End Sub
[/code]
als ik t goed heb..
1 2 3 4 5 6 7 8 | Sub fok() For Each sh In ActiveWorkbook.Worksheets sh.Activate If Range("B2").Value <> "" Then ActiveSheet.Name = Range("B2").Value Next sh End Sub |
ja maar die formule klopt dus nietquote:Op dinsdag 19 juni 2012 10:56 schreef ralfie het volgende:
hmm? je kunt toch gewoon rechtsklikken op de trendlijn en dan bij eigenschappen 'vergelijking in grafiek weergeven' aanvinken? Mocht je specifieke waarden nodig hebben gebruik je die formule om dat te berekenen
waarschijjnlijk moet je de datum waarvan je een waarde wilt weten nog omrekenen naar de seriele datum. Excel slaat een datum nl op als zoveel dagen na 0-januari-1900.quote:Op dinsdag 19 juni 2012 11:19 schreef andreas612 het volgende:
[..]
ja maar die formule klopt dus niet
Hier de code van vogeltjesdansquote:Op woensdag 20 juni 2012 10:32 schreef vogeltjesdans het volgende:
Het gaat om een excel document. Ik weet dat er een apart excel topic is, maar hier moet ook VBA code in dus ik post het even apart.
Waar het om gaat is het volgende. Ik heb een lijst met kolommen:
datum omschrijving behandelaar status
op deze kolommen pas ik een filter toe, waardoor ik makkelijk kan sorteren.
Wat ik wil is het volgende:
* selecteren op behandelaar
* afdrukbereik bepalen op behandelaar
* dit afdrukken
Dit heb ik in een macro gestopt (relatieve verwijzinng aangezet) met als volgend resultaat.
[ code zie onder ]
Dit werkt, maar de behandelaar heeft een telkens wisselend aantal rijen. Dus ik wil dat het afdrukbereik bepaald wordt op de rijen waar de betreffende behandelaar staat. Een soort =ALS functie, maar ik weet niet hoe ik dat in deze code moet invoeren.
Iemand?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Sub Sorteren() ActiveCell.Offset(5, 4).Range("A1").Select ActiveWorkbook.Worksheets("blad1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("blad1").AutoFilter.Sort.SortFields.Add Key:= _ ActiveCell.Offset(-3, 0).Range("A1"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("blad1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveCell.Offset(-1, -5).Range("A1:J17").Select Selection.PrintOutCopies:=1, Collate:=True, IgnorePrintAreas:=False End Sub |
Het eerste probleem wat ik zie is dat deel() meerdere argumenten nodig heeft. Het tweede probleem is dat vind.alles (bij mij althans) slechts één tekst zoekt, en dus niet 1 of 2 of 3 of ...quote:Op woensdag 20 juni 2012 10:32 schreef jakees het volgende:
Ik probeer de eerste positie van een getal te vinden in een string. Ik gebruik office 2007 taal = NL. Nu heb ik de volgende functie gevonden
=als(deel(vind.alles({0;1;2;3;4;5;6;7;8;9};A1&"0123456789"))>LENgte(A1);0;deel(vind.alles({0;1;2;3;4;5;6;7;8;9};A1 &"0123456789")))
op 1 of andere manier werkt die formule niet. Kunnen jullie even kijken? Ik ben al een tijdje bezig en heb ook veel gezocht op internet, vind wel dingen maar die lukken op eoa. manier niet. Thx alvast!
1 2 3 | B1 = A1 & "1234567890" C1 = MIN(VIND.SPEC(1;B1);VIND.SPEC(2;B1);VIND.SPEC(3;B1);VIND.SPEC(4;B1);VIND.SPEC(5;B1);VIND.SPEC(6;B1);VIND.SPEC(7;B1);VIND.SPEC(8;B1);VIND.SPEC(9;B1);VIND.SPEC(0;B1)) D1 = ALS(C1>LENGTE(A1);-1;C1) |
Eerste positie van een getal (onderstaande functie bevestigen met CTRL+SHIFT+ENTER)quote:Op woensdag 20 juni 2012 10:32 schreef jakees het volgende:
Ik probeer de eerste positie van een getal te vinden in een string. Ik gebruik office 2007 taal = NL. Nu heb ik de volgende functie gevonden
=als(deel(vind.alles({0;1;2;3;4;5;6;7;8;9};A1&"0123456789"))>LENgte(A1);0;deel(vind.alles({0;1;2;3;4;5;6;7;8;9};A1 &"0123456789")))
op 1 of andere manier werkt die formule niet. Kunnen jullie even kijken? Ik ben al een tijdje bezig en heb ook veel gezocht op internet, vind wel dingen maar die lukken op eoa. manier niet. Thx alvast!
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
[ Bericht 16% gewijzigd door Deetch op 20-06-2012 11:23:49 ]Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
Thanks! Maar als ik hem aanpas en uitvoer geeft hij een fout op de onderste regel, deze wordt geel:quote:Op woensdag 20 juni 2012 10:58 schreef Deetch het volgende:
[..]
Hier de code van vogeltjesdans
[ code verwijderd ]
vervang Range("A1:J17").Select door
Range("A1", Range("J65536").End(xlUp)).Select en hij zou moeten werken
tussen False en End Sub moet een ENTER (foutje bij kopieren van jouw code)quote:Op woensdag 20 juni 2012 11:34 schreef vogeltjesdans het volgende:
[..]
Thanks! Maar als ik hem aanpas en uitvoer geeft hij een fout op de onderste regel, deze wordt geel:
Selection.PrintOutCopies:=1, Collate:=True, IgnorePrintAreas:=FalseEnd Sub.
quote:Op woensdag 20 juni 2012 11:18 schreef Deetch het volgende:
[..]
Eerste positie van een getal (onderstaande functie bevestigen met CTRL+SHIFT+ENTER)
=MATCH(TRUE,ISNUMBER(-MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0)
Alle getallen uit een string (onderstaande functie bevestigen met CTRL+SHIFT+ENTER)
=--MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&{0,1,2,3,4,5,6,7,8,9})),SUM((LEN(A1)-LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},"")))))
Let op dat je de CTRL+SHIFT+ENTER gebruikt ipv gewone enter anders werken bovenstaande functies nietDeetch, zit jij op Excel of zo. 1 minpuntje aan je post. Het is niet duidelijk dat je op CTRL-SHIFT-ENTER moet drukken maar dat vergeef ik je ;-)SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.[ afbeelding ]
Toch nog een paar vraagjes. De eerste heb ik vertaald naar:
=VERGELIJKEN(WAAR;ISGETAL(-DEEL(A1;RIJ(INDIRECT("1:"&LENGTE(A1)));1));0) ik snap niet zo goed wat die doet.
Die 2e retourneert bij alle getallen in de string. Hartstikke mooi maar ik ben op zoek naar de 1e positie van het getal. Is daar nog makkelijk achter te komen. Bijvoorbeeld in de string. Oranjenummer1inBrazilie2014 wil ik als resultaat 13 terugkrijgen omdat daar de eerste string staat. Thx alvast weer!
=ISGETAL() is ook een 2007-functiequote:Op woensdag 20 juni 2012 12:38 schreef Deetch het volgende:
Die eerste functie geeft aan op welke positie het eerste getal staat, precies wat je zocht.
Ik weet alleen niet zeker of ISGETAL wel een excel 2007 functie is of dat die nieuw is in 2010. Krijg je daar een foutmelding? ook als je wel ctrl+shift+enter doet
Kutquote:Op woensdag 20 juni 2012 11:36 schreef Deetch het volgende:
[..]
tussen False en End Sub moet een ENTER (foutje bij kopieren van jouw code)
1 | =EXP(((-1*VB1)*VB2))*NORMSDIST(C24) |
Ik faal, hardquote:Op woensdag 20 juni 2012 14:16 schreef DaFan het volgende:
Dat heet een User Defined Function. Ga je zelf proberen of heb je hulp nodig?
quote:Op woensdag 20 juni 2012 12:38 schreef Deetch het volgende:
Die eerste functie geeft aan op welke positie het eerste getal staat, precies wat je zocht.
Ik weet alleen niet zeker of ISGETAL wel een excel 2007 functie is of dat die nieuw is in 2010. Krijg je daar een foutmelding? ook als je wel ctrl+shift+enter doet
Ik heb het vertaald naar:quote:Op woensdag 20 juni 2012 12:20 schreef jakees het volgende:
[..]
Deetch, zit jij op Excel of zo. 1 minpuntje aan je post. Het is niet duidelijk dat je op CTRL-SHIFT-ENTER moet drukken maar dat vergeef ik je ;-)
Toch nog een paar vraagjes. De eerste heb ik vertaald naar:
=VERGELIJKEN(WAAR;ISGETAL(-DEEL(A1;RIJ(INDIRECT("1:"&LENGTE(A1)));1));0) ik snap niet zo goed wat die doet.
Die 2e retourneert bij alle getallen in de string. Hartstikke mooi maar ik ben op zoek naar de 1e positie van het getal. Is daar nog makkelijk achter te komen. Bijvoorbeeld in de string. Oranjenummer1inBrazilie2014 wil ik als resultaat 13 terugkrijgen omdat daar de eerste string staat. Thx alvast weer!
Thx!!!! Ik wist niet dat je CTRL SHIFT ENTER moest gebruiken. Had hij wel even kunnen zeggen ;-) Maar die + deed het hem. Ik denk ook wel dat ik de formule ongeveer snap (een klein beetje iig).quote:Op woensdag 20 juni 2012 21:33 schreef snabbi het volgende:
=VERGELIJKEN(WAAR;ISGETAL(-DEEL(A1;RIJ(INDIRECT("1:"&LENGTE(A1)));1));0)
is juist (had Deetch gezegd CTRL SHIFT ENTER?)
Je hebt in jouw formule bij de A1 een + staan ipv een ;
Wat het eigenlijk doet is dat het in de cel zelf een nieuwe matrix aanmaakt (genaamd array). In deze matrix wordt op elke regel 1 karakter geplaatst. Vervolgens wordt van dit karakter bepaald of het een getal is of niet. Deze uitkomst (WAAR of ONWAAR) wordt opgeslagen op deze regel en daarna wordt de eerste regel met een WAAR teruggeven.
Het gebruik van de CTRL SHIFT ENTER zorgt ervoor dat je de array functie in de cel gebruikt. Dit kan je ook zien aan je formule doordat de formule tussen { } accolades worden weergegeven.
1 2 3 4 5 6 7 8 9 | Private Sub CommandButton2_Click() UserForm1.Hide Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Sheets("TOTAAL").Select End Sub |
CloseMode is een 1 wanneer je zelf gebruik maakt van Unload Mequote:Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
'xxx
End If
End Sub
Nu kan je gewoon iets doen als:quote:Public Function BladBestaat(ByVal myName As String) As Boolean
On Error Resume Next
Bladbestaat = (Sheets(myName).Name <> "")
On Error GoTo 0
End Function
quote:Dim MyNewName As String
naamwerkblad:
MyNewName = InputBox("Hoe moet het tabblad heten")
If BladBestaat(MyNewName) Then
MsgBox ("Deze naam bestaat al")
GoTo naamwerkblad
End If
ActiveSheet.Name = MyNewName
Okquote:
1 2 3 4 5 | Public Function ExpNormSDist(x As Double, y As Double, z As Double) As Double ExpNormSDist = Exp(((-1 * x) * y)) * Application.WorksheetFunction.NormSDist(z) End Function |
1 | =ExpNormSDist(VB1;VB2;C24) |
1 2 3 4 5 | Public Function ExpNormSDist(z As Double) As Double ExpNormSDist = Exp(((-1 * Range("VB1").Value) * Range("VB2").Value)) * Application.WorksheetFunction.NormSDist(z) End Function |
1 | =ExpNormSDist(C24) |
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 | Private Sub CommandButton1_Click() Item = TextBox1 ActiveSheet.Range("b2").Value = Item Item = TextBox2 ActiveSheet.Range("b3").Value = Item Item = TextBox3 ActiveSheet.Range("b4").Value = Item Item = TextBox4 ActiveSheet.Range("b5").Value = Item Item = TextBox5 ActiveSheet.Range("f2").Value = Item Item = TextBox6 ActiveSheet.Range("f3").Value = Item On Error GoTo fout ActiveSheet.Name = ActiveSheet.Range("B2") fout: MsgBox ("het nummer bestaat al, voer een nieuw nummer in") UserForm1.Hide Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Sheets("basis").Unprotect Sheets("basis").Copy Before:=Sheets("basis") Sheets("basis").Protect Sheets("basis (2)").Select UserForm1.Show UserForm1.Hide End Sub |
Ok, laten we beginnen met een stukje voor de leesbaarheid van je code. Hiermee bedoel ik ook voorkomen dat je onnodig variabelen aanmaakt, danwel de code heel lang maaktquote:Op vrijdag 22 juni 2012 08:28 schreef xyntarsus het volgende:
thx voor de info wederom
ik heb voor de foutcontrole (bestaat de bladnaam al, zo ja geef een melding)
de volgende code
[ code verwijderd ]
Deze gaat dus lopen als ik op OK klik
Als ik nu een al bestaand project heb geeft hij ook de juiste foutmelding, en hij opent ook netjes
het userform opnieuw.
Hierna gaat het mis, alle nummers die ik invoer neemt hij als 'al bestaand' en ik kom er niet meer uit.
Als ik nu de functie beeindig en opnieuw opstart, blijft hij de fout loopen en kan ik geen nieuwe bladen maken.
Wie kan mij vertellen wat ik fout doe??
Nu naar je echte probleem. Hij loopt je code van boven tot beneden door. Dit houdt in dat hij je code van "fout" altijd uitvoert, ongeacht of het nu goed of fout gaat. Wat je dus moet doen is zorgen dat je code stopt, wanneer het niet fout gaat. In jouw geval krijg je dan zoiets:quote:[b2] = textbox1
[b3] = textbox2
[b4] = textbox3
[b5] = textbox4
[f2] = textbox5
[f3] = textbox6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Private Sub CommandButton1_Click() On Error GoTo fout [b2] = textbox1 [b3] = textbox2 [b4] = textbox3 [b5] = textbox4 [f2] = textbox5 [f3] = textbox6 ActiveSheet.Name = Range("B2") 'mag overigens ook zijn ActiveSheet.Name = [b2] 'wanneer het goed gaat moet hij nu stoppen, daarom zet ik hieronder End neer, je kan bijvoorbeeld ook een Goto Einde maken ofzo On Error GoTo 0 'Wanneer je iets met error handling doet, is het goed om wanneer je klaar bent met het afvangen van je error weer terug te verwijzen naar goto 0 zodat weer de normale Excel error naar voren kan komen. End fout: 'en hier je fout handling zoals je dat wil end sub |
Voor het eerste deel is er zover ik weet geen normale formule die je daar bij kunt helpen en moet je dus naar VBA en krijg je iets in de trant van:quote:Op donderdag 28 juni 2012 16:31 schreef xyntarsus het volgende:
en wederom ben ik er met een vraag.
Ik wil in het bestand dat ik aan het bouwen ben nog 2 extra dingen toevoegen.
1. een lijst van alle tabbladen (in mijn geval projectnummers)
waarbij dan een aantal gegevens uit het tabblad worden gezet in een lijst
2. een zoekfunctie waarbij ik een artikelnummer opgeef en die door meerdere tabbladen heen zoekt en kijkt of er in een bepaalde range cellen
(gedefinieerd door een artikelnummer aan het begin van de regel) niet lege cellen zijn.
deze regels met gegevens (dus de regels waarin in gegevens zijn ingevoerd) moet dan in een lijst
komen die weer begint met het projectnummer en dan de rest van de regel erachter zet
(en voor elk product in de zoekopdracht een lijst maakt)
Ik heb bij deze twee echter geen idee hoe ik moet beginnen
Wie helpt mij???
1 2 3 | For i = 1 To Sheets.Count ActiveCell.Offset(i - 1, 0).Value = Sheets(i).Name Next i |
1 2 3 4 5 6 7 8 | Private Sub CommandButton4_Click() Sheets.Add Before:=Sheets("totaal") ActiveSheet.Name = "Projectenlijst" For i = 4 To Sheets.Count -1 ActiveCell.Offset(i - 1, 1).Value = Sheets(i).Name Next i |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub test() j = 0 For i = 4 To Sheets.Count -1 If Sheets(i).Name = "totaalblad" Or Sheets(i).Name = "basistabel" Then j = j Else ActiveCell.Offset(j, 1).Value = Sheets(i).Name j = j + 1 End If Next i End Sub |
1 2 3 4 5 6 7 | Select Case Sheets(i).Name Case "totaal", "test" j = j Case Else ActiveCell.Offset(j, 1).Value = Sheets(i).Name j = j + 1 End Select |
Ik ben er van uitgegaan dat de sheetnamenlijst in b1 en daaronder staat, anders in de activesheet regel b1 veranderen in de gewenste celquote:Op vrijdag 29 juni 2012 14:15 schreef xyntarsus het volgende:
ok thx, dit werkt, ik kan nu een projectenlijst maken en updaten
enige wat hij nu niet doet, is projecten die er niet meer zijn weghalen,
is er een mogelijkheid dat ik dta kan invoegen?
1 2 3 4 5 6 7 8 9 10 11 12 | Sub sheetbestaatnietmeer() On Error Resume Next ActiveSheet.Range("b1", ActiveSheet.Range("b1").End(xlDown)).Select For Each c In Selection If Sheets(c.Value).Name = "" Then c.EntireRow.Delete Next c On Error GoTo 0 End Sub |
Tja eigenlijk blijf ik wel van mening dat je eigenlijk al je data in 1 tabblad moet zetten. Wanneer je verschillende dwarsdoorsnedes wilt maken van je gegevens set kan je dat veel makkelijker via een pivot tabel regelen. Dan kan je tenminste zeggen ik wil alles van 1 project zien, of 1 product over alle projecten heen.quote:Op vrijdag 29 juni 2012 10:00 schreef xyntarsus het volgende:
voor het tweede deel van mijn vraag:
omdat ik ook een lijst per project wil kunnen uitdraaien, en ik iedere keer dezelfde tabel heb
voor een project (in de rijen de producten en in de kolommen 52 weken) wordt het heel onoverzichtelijk om dat in 1 blad te doen.
vandaar de keuze om voor elk project (pakweg 50 tegelijk meestal) een apart tabblad te maken, mijn 1e blad is dan een totaalblad dat optelt door de bladen heen.
Ik heb laatst een vergelijkbare opzet gezien, maar helaas krijg ik daar de code niet van :S
Dat is eigenlijk wel beter voor xyntarsus' gebruik. Maar ja, access is engquote:
Falerquote:Op maandag 2 juli 2012 08:20 schreef Deetch het volgende:
[..]
Dat is eigenlijk wel beter voor xyntarsus' gebruik. Maar ja, access is eng
zucht, IT op de werkplekquote:Op maandag 2 juli 2012 10:43 schreef xyntarsus het volgende:
access is niet eng hoor
maar acces is niet beschikbaar op het netwerk hier
moet het doen met word en excel....
en wat betreft de aparte tabbladen, ook dat is een soort van
'opgelegde eis' :S
pivot tables zouden inderdaad kunnen als alles in 1 blad stond.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Sub zoek(ByRef Sheet As Worksheet, ByRef Targetcell As Range, ByRef qrySearch As String, ByRef numcolumns As Integer) Dim zoekrange As Range, lastrow As Integer, cell As Range Set zoekrange = Sheet.Range("A:A")'Waar gaan we zoeken? Set cell = Sheet.Cells(1, 1)'De eerste cell in de kolom lastrow = 0 Do Set cell = zoekrange.Find(qrySearch, cell, xlValues, xlPart, xlByColumns, xlNext) If cell Is Nothing Then Exit Sub'zoekopdracht nergens gevonden If cell.Row < lastrow Then Exit Sub'voorbij einde van kolom lastrow = cell.Row Targetcell.Value = Sheet.Name If WorksheetFunction.CountA(Sheet.Rows(lastrow)) > 1 Then'Er zitten niet-lege cellen in deze rij Sheet.Range("A" & lastrow).Resize(ColumnSize:=numcolumns).Copy Targetcell.Offset(ColumnOffset:=1).Resize(ColumnSize:=numcolumns) Set Targetcell = Targetcell.Offset(Rowoffset:=1) End If Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Sub test() dim rngDoelwit as Range dim strQry as string dim numCols as integer 'hoeveel kolommen moeten er gekopieerd worden numCols = 10 'Je zoekopdracht strQry = "1*" 'Waar moeten de resultaten komen set rngDoelwit = ActiveCell For i = 4 To Sheets.Count -1 If Sheets(i).Name <> "totaalblad" And Sheets(i).Name <> "basistabel" Then zoek Sheets(i), rngDoelwit, strQry, numCols End if Next i End Sub |
1 2 | item = textbox activesheet.name = ' "art"' &item' |
snel en makkelijk via VBA, maar het kan ook in excel (zij het omslachtigquote:Op vrijdag 6 juli 2012 11:29 schreef Pablooo het volgende:
Ik heb in excel een sheet met 2 lijsten naast elkaar
Lijst 1 heeft een aantal namen
Lijst 2 heeft getallen die bij de namen horen
In plaats van:
Banaan 2
Appel 3
Wil ik zo een lijst
Banaan
Banaan
Appel
Appel
Appel
Weet iemand hoe ik dit snel en makkelijk kan doen?
1 2 3 4 | Fruit Aantal Banaan 2 Appel 3 Peer 4 |
1 2 3 | sheetnaam = InputBox("Geef artikelnummer: ", "Artikelnummer") Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = "art." & sheetnaam |
Thanks!quote:
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
quote:Op zondag 8 juli 2012 21:12 schreef DaFan het volgende:
Lukt je dat niet zelf adhv de formule die je net hebt gekregen?Ik had zelf inderdaad even verder moeten denken, maar heb er niet aangedacht om een ALS in een ALS te verwerken.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
=ALS(Vragen!A1="";"Blanco";ALS(Vragen!A1=Antwoorden!A1;"Goed";"Fout"))
En het werkt.![]()
Jup, mijn mega-super-duper-planning voor m'n studie!quote:Op maandag 9 juli 2012 21:29 schreef Holy_Goat het volgende:
/offtopic
Even een andere 'vraag'
Heeft iemand van jullie wel eens wat gemaakt (in excel om het ontopic te houden) waar je ZO trots op bent dat je er gewoon een tikkie blij van wordt als je er aan denkt? Ja, i know, quite nerdy enzo, maar vroeg het me af.
Want dat heb ik nu welVoor het eerst ook een echt gelikte GUI in elkaar geflanst die onwijs intuitief aanvoelt en gewoon vet is. (als het af is post ik wel filmpie
)
/offtopic
Maarja, het is geen showoff topic hier natuurlijk ^^
Met andere woorden ik begrijp niet wat je precies wilt. Excel kan goed werken met getallen, bedoel je soms uit een hele reeks data "random" een x aantal getallen halen?quote:Op zondag 15 juli 2012 23:27 schreef sitting_elfling het volgende:
Ik vroeg me af of Excel eigenlijk de mogelijkheid kent om een bootstrap te doen (uit een distrubtie trekken). Met andere woorden, het (tigmaal) samplen van een tijdreeks?
Ja, maar moet je zelf schrijven in visual basic.quote:Op zondag 15 juli 2012 23:27 schreef sitting_elfling het volgende:
Ik vroeg me af of Excel eigenlijk de mogelijkheid kent om een bootstrap te doen (uit een distrubtie trekken). Met andere woorden, het (tigmaal) samplen van een tijdreeks?
Wellicht begrijp ik je verkeerd, ik lees dit even als dat je een scenario wilt doorberekenen aan de hand van een random input? Ja dat kan. Maak hiervoor gebruik van de gegevenstabel zoals dit te vinden is onder tab Gegevens -> Wat-als analyse.quote:Op zondag 15 juli 2012 23:27 schreef sitting_elfling het volgende:
Ik vroeg me af of Excel eigenlijk de mogelijkheid kent om een bootstrap te doen (uit een distrubtie trekken). Met andere woorden, het (tigmaal) samplen van een tijdreeks?
De makkelijkste manier is je relevante data naar een nieuw werkblad te brengen en de oude te verwijderen.quote:Op maandag 16 juli 2012 18:35 schreef Maartel het volgende:
Oké, 'help!'
Om één of andere reden is een Excelsheet van me kolossaal geworden met héél veel rijen en héél veel kolommen. Zoveel dat Excel het niet aan kan om ook maar één rij of kolom te verwijderen omdat dat 'te zwaar is', ookal is 99% ervan leeg.
Weet iemand of er een manier is om een Excel sheet te 'croppen'?
Pfff, dan gaat alleen de lay-out enigszins naar de kl*ten, maar dat gaan we dan toch maar even proberen want rijen verwijderen trekt ie kennelijk echt niet.quote:Op maandag 16 juli 2012 22:58 schreef snabbi het volgende:
[..]
De makkelijkste manier is je relevante data naar een nieuw werkblad te brengen en de oude te verwijderen.
Ontzettend bedankt, ik kende die functie niet.quote:Op dinsdag 17 juli 2012 23:06 schreef snabbi het volgende:
Voorbeeld
Je wegingsfactor in kolom A (bijvoorbeeld van A2 tot A10), je cijfer in kolom B.(bijvoorbeeld van B2 tot B10).
Je kan nu je totaal berekenen door middel van somproduct(A2:A10;B2:B10) [in het engels sumproduct] en je kunt het totaal van je wegingsfactor berekenen via som(A2:A10).
Je gewogen gemiddelde vormt dus: somproduct(A2:A10;B2:B10)/som(A2:A10)
Hmm, ik heb geprobeerd het totaal aantal punten (voor deling) te berekenen, echter voert Excel mijn formule überhaupt niet uit. Wat is er fout aan deze formule?quote:Op dinsdag 17 juli 2012 23:06 schreef snabbi het volgende:
Voorbeeld
Je wegingsfactor in kolom A (bijvoorbeeld van A2 tot A10), je cijfer in kolom B.(bijvoorbeeld van B2 tot B10).
Je kan nu je totaal berekenen door middel van somproduct(A2:A10;B2:B10) [in het engels sumproduct] en je kunt het totaal van je wegingsfactor berekenen via som(A2:A10).
Je gewogen gemiddelde vormt dus: somproduct(A2:A10;B2:B10)/som(A2:A10)
1 | =SUMPRODUCT(Weging[[#All]];[@[Proefwerk H1]]:OFFSET(E6;;COUNTA(ProgressChartValues))) |
1 | =IFERROR(SUMPRODUCT(Weging[#All];[@[Proefwerk 1]]:OFFSET(B3;;COUNTA(ProgressChartValues)))/SUM(Weging[#All]);"") |
Ik heb een voorbeeld voor je gemaakt hoe ik het zou doen. Dit voorbeeld moet je alleen gebruiken wanneer het aantal leerlingen niet heel groot wordt (dus zeg onder de 1000 ofzo).quote:
Briljant.quote:Op woensdag 18 juli 2012 22:02 schreef snabbi het volgende:
[..]
Wat ik hier doe is het volgende:
Ik bepaal nog steeds de sumproduct op de gebruikelijke wijze, immers vormt een 0 * een wegingsfactor gewoon 0. De truc zit in het tweede deel: SUM((C3:E3>0)*(C1:E3))
Wat ik hier doe is gebruik maken van een array (of vector) binnen 1 cel. De vector voor het deel C3:E3 levert een 1 op wanneer dit groter is dan 1 en een 0 wanneer dit niet groter is dan 0. Deze 1 of 0 vermenigvuldig ik vervolgens met de betreffende wegingsfactor in C1:E1. Hierdoor tellen alleen de wegingsfactoren voor je betreffende leerling mee wanneer het cijfer >0 is.
1 | {=IFERROR(SUMPRODUCT(Weging[#All];[@[Proefwerk H1]]:OFFSET(B3;;COUNTA(ProgressChartValues)))/SUM(([@[Proefwerk H1]]:OFFSET(B3;;COUNTA(ProgressChartValues))>0)*Weging[#All]);"")} |
Waarom weet ik niet precies, maar SUMPRODUCT(C3:E3>0) blijft TRUE en FALSE gebruiken ipv 1 en 0. SUMPRODUCT((C3:E3>0)*1) maakt er wel al 1 en 0 van.quote:Op woensdag 18 juli 2012 23:15 schreef PowerData het volgende:
Overigens is er iets wat ik nog niet helemaal snap: wat is nou het verschil tussen SUM((C3:E3>0)*(C1:E3)) en SUMPRODUCT(C3:E3>0;C1:E3). De SUMPRODUCT werkt niet, maar ik zou toch denken dat die juist zelfs zonder array zou werken?
You're welcomequote:Bedankt.
Zoals je al zei is het voor het totaal berekenen niet nodig om een vergelijking als > 0 in te voeren, gezien die automatisch al wegvalt.quote:Op woensdag 18 juli 2012 23:33 schreef snabbi het volgende:
[..]
Waarom weet ik niet precies, maar SUMPRODUCT(C3:E3>0) blijft TRUE en FALSE gebruiken ipv 1 en 0. SUMPRODUCT((C3:E3>0)*1) maakt er wel al 1 en 0 van.
Het nadeel van dit toe te passen in je sumproduct deel is dat je het cijfer van je proefwerk kwijt raakt in het 1 en 0 geneuzel. Dit zou je weer moeten oplossen door er zoiets van te maken:
=SUMPRODUCT((C3:E3>0)*(C3:E3);$C$1:$E$1)
1 2 3 4 5 | 1 jan 2 jan 3 jan 4 jan prod 1 1 2 0 1 prod 2 1.5 1.3 1 1.4 prod 3 2 0 1.2 1.9 prod 4 0 1 1.7 1.2 |
Dank je, met een ,0 bij de roundup lukte hetquote:Op vrijdag 20 juli 2012 18:02 schreef ralfie het volgende:
=SUM(ROUNDUP((A2:A5+B2:B5))
invullen en met ctr+shift+enter accepteren
had je het zelf opgelost? Misschien kon iemand anders er nog wat van leren.quote:
Had het zelf opgelost:quote:Op maandag 23 juli 2012 08:46 schreef Deetch het volgende:
[..]
had je het zelf opgelost? Misschien kon iemand anders er nog wat van leren.
http://social.technet.mic(...)5-876e-9d1d46e7975f/quote:Op vrijdag 27 juli 2012 21:22 schreef _superboer_ het volgende:
Als ik enkele van mijn excelbestanden probeer te openen (>15mb) loopt excel (64bit) vast. Als ik deze bestanden echter openen op een virtual machine met excel (32bit) kunnen de bestanden wel geopend worden. Iemand een idee waar dit aan kan liggen?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |