abonnement Unibet Coolblue Bitvavo
pi_117954310
Hm, kom er eigenlijk niet helemaal uit.

Ik heb 2 cellen, gevuld met cijfers. Nu wil ik naast die 2 cellen een andere cel hebben, die een bepaalde waarde aangeeft als één van de twee het hoogste is.



Voorbeeld. Q2 en R2 hebben de cijfers. Q2 is het hoogste, want die heeft het cijfer 4. R2 heeft het cijfer 2 er in. Dan wil ik dat cel S2 de letter: P aangeeft.

:D
pi_117954420
Heuh, is al gelukt! Heb het gedaan als volgt:
=ALS(Q2 > R2; "P"; "D")
pi_117987489
Ik kom er nog steeds niet uit met onderstaande macro.

Mijn probleem is dat de file .bestand niet fysiek geopend dient te worden en dat likt dan ook met de optie GetObject ("P:\bestand.csv")
Daardoor is het wel aktief en zichtbaar in VBA.
Dan moet het bestand dus gesorteerd worden (kolom H) en dat wil maar niet lukken als het bestand fysiek door excel geopend is.

Is hier nog een oplossing of aanpassing op de code voor te bedenken?
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
Sub test()

' Macro recorded 9-10-2012 by xxx
 GetObject ("P:\bestand.csv")
  
    Dim wkb As Workbook, sht As Worksheet
    'Deze regel opent Wel het bestand, maar als object. Het is niet zichtbaar of oproepbaar vanuit excel.
    Set wkb = GetObject("P:\bestand.csv")    'hier je pad + bestand
    Set sht = wkb.Sheets(1)    '1 is eerste werkblad, of anders werkbladnaam invoeren
           
    sht.Range("A1:P60000").Sort Key1:=Range("H2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    
  With Sheets(1)
      .Columns(3).Insert
      .Range("C3") = "Collo No"
      .Range("C4").Resize(.Cells(Rows.Count, 2).End(xlUp).Row) = "=LOOKUP(C[-1],bestand.csv!R2C8:R60000C8,bestand.csv!R2C6:R60000C6)"
        
    On Error Resume Next
    Application.ScreenUpdating = False
    
    wkb.Close False    'anders blijft het wkb in VBA als geopend achter

    
   End With
End Sub
pi_117988349
quote:
0s.gif Op maandag 15 oktober 2012 09:20 schreef Frixel het volgende:
Ik kom er nog steeds niet uit met onderstaande macro.

Mijn probleem is dat de file .bestand niet fysiek geopend dient te worden en dat likt dan ook met de optie GetObject ("P:\bestand.csv")
Daardoor is het wel aktief en zichtbaar in VBA.
Dan moet het bestand dus gesorteerd worden (kolom H) en dat wil maar niet lukken als het bestand fysiek door excel geopend is.

Is hier nog een oplossing of aanpassing op de code voor te bedenken?
[ code verwijderd ]

je bedoelt dat het niet lukt als het NIET fysiek door excel is geopend?
pi_117988651
quote:
0s.gif Op maandag 15 oktober 2012 10:00 schreef Holy_Goat het volgende:

[..]

je bedoelt dat het niet lukt als het NIET fysiek door excel is geopend?
klopt, Als het niet fysiek door Excel is geopend lukt het niet. 8)7

Het vervelende is dat het bestand groot en op netwerk staat dus duurt het (te)lang voordat het geopend, en bewerkt is.
Dan komt erbij dat de macro meerdere keren per dag gebruikt word en dan hele ritueel steeds herhaald moet worden. Of het moet kunnen zien dat het de eerste keer al gesorteerd is en dat die bewerking niet meer hoeft plaats te vinden!
Dan hoeft het daarna ook niet steeds meer geopend te worden.
Iedere dag is het een nieuw bestand dus 1 keer bewerken en dan nvoorlopig niets meer aan doen is ook geen optie.

Maar ja, dat gaat mijn pet te boven om zoiets te maken :D
pi_117989317
quote:
0s.gif Op maandag 15 oktober 2012 10:16 schreef Frixel het volgende:

[..]

klopt, Als het niet fysiek door Excel is geopend lukt het niet. 8)7

Het vervelende is dat het bestand groot en op netwerk staat dus duurt het (te)lang voordat het geopend, en bewerkt is.
Dan komt erbij dat de macro meerdere keren per dag gebruikt word en dan hele ritueel steeds herhaald moet worden. Of het moet kunnen zien dat het de eerste keer al gesorteerd is en dat die bewerking niet meer hoeft plaats te vinden!
Dan hoeft het daarna ook niet steeds meer geopend te worden.
Iedere dag is het een nieuw bestand dus 1 keer bewerken en dan nvoorlopig niets meer aan doen is ook geen optie.

Maar ja, dat gaat mijn pet te boven om zoiets te maken :D
Hoeveel kolommen gaat het om?
En hoeveel rijen?

Wat je anders zou kunnen doen is (een beetje stom wellicht) alle data inlezen in arrays,
deze intern sorteren, en als een nieuwe csv wegschrijven. Aangeven of iets al gesorteerd is is simpel, je zou een klein bestandje kunnen maken met daarin sorted=1 en de datum oid.
pi_117989422
Je zou ook eens kunnen kijken naar het gebruik van ActiveX data objects
pi_117989463
quote:
0s.gif Op maandag 15 oktober 2012 10:44 schreef Holy_Goat het volgende:
Je zou ook eens kunnen kijken naar het gebruik van ActiveX data objects
Hmmja. dit gaat me dus te ver. daar moet ik bij afhaken...

bestand is kolom A t/m P en 60000 regels
pi_117990219
ik snap alleen niet echt waarom openen vanuit netwerk meer tijd zou kosten als je het echt IN EXCEL opent, dan wanneer je het niet echt opent.

Zou het voor jou ook te ver gaan om alles in te lezen in een 2D array en dan via een quicksort op de key (zoek maar op quicksort, best leuk) alles sorteren + terugstoppen in csv
pi_117990343
quote:
0s.gif Op maandag 15 oktober 2012 11:11 schreef Holy_Goat het volgende:
ik snap alleen niet echt waarom openen vanuit netwerk meer tijd zou kosten als je het echt IN EXCEL opent, dan wanneer je het niet echt opent.

Zou het voor jou ook te ver gaan om alles in te lezen in een 2D array en dan via een quicksort op de key (zoek maar op quicksort, best leuk) alles sorteren + terugstoppen in csv
Ik zal eens zoeken op "quicksort " maar vrees dat ik er niet veel verder mee kom. Ik weet waar ik een macro kan maken en plakken in VBA maar dan houd het wel op.

Dat openen vergt toch wel tijd iedere keer als de macro gebruikt word. (zeker 10x per dag) en dan doet ie steeds dat openen en sorteren.
pi_117990541
quote:
0s.gif Op maandag 15 oktober 2012 11:15 schreef Frixel het volgende:

[..]

Ik zal eens zoeken op "quicksort " maar vrees dat ik er niet veel verder mee kom. Ik weet waar ik een macro kan maken en plakken in VBA maar dan houd het wel op.

Dat openen vergt toch wel tijd iedere keer als de macro gebruikt word. (zeker 10x per dag) en dan doet ie steeds dat openen en sorteren.
dus op zich is openen geen probleem, als het maar niet 10x gedaan word? (om te sorteren)
pi_117990591
quote:
0s.gif Op maandag 15 oktober 2012 11:20 schreef Holy_Goat het volgende:

[..]

dus op zich is openen geen probleem, als het maar niet 10x gedaan word? (om te sorteren)
klopt. 1x is genoeg als het gesaved word.
pi_117990713
quote:
0s.gif Op maandag 15 oktober 2012 11:21 schreef Frixel het volgende:

[..]

klopt. 1x is genoeg als het gesaved word.
Dan zou ik toch met mijn eerdere code de file echt in excel openen, dan de .sort gebruiken en opslaan.
Verder kun je een bestandje ernaast maken bijvoorbeeld issorted.txt en daarin bv de datum van vandaag. Als de datum gisteren is, dan openen en sorteren en datum aanpassen in bestandje. Anders als datum al vandaag is, lekker niet openen en sorteren.
pi_117990768
Dus zo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dim welkedag as date
open "locatie/issorted.txt" for input as #1
input #1, welkedag
close #1

if welkedag == Date() then exit sub

dim srcwbk As Workbook
dim sht As Worksheet
Set srcwbk = Workbooks.Open(filename:="je locatie hier", UpdateLinks:=False)
srcwbk.sht.range(....).sort en dan die key ook srcwbk.sht.range(keyrange)

Afsluiten kan dan weer met 
srcwbk.Close savechanges:=true
    Set srcwbk = Nothing 

open "locatie/issorted.txt" for output as #1
write #1, Date
close #1
pi_117991071
quote:
0s.gif Op maandag 15 oktober 2012 11:25 schreef Holy_Goat het volgende:

[..]

Dan zou ik toch met mijn eerdere code de file echt in excel openen, dan de .sort gebruiken en opslaan.
Verder kun je een bestandje ernaast maken bijvoorbeeld issorted.txt en daarin bv de datum van vandaag. Als de datum gisteren is, dan openen en sorteren en datum aanpassen in bestandje. Anders als datum al vandaag is, lekker niet openen en sorteren.
Echt heel erg bedankt voor de moeite hoor maar ik haak af.
Dit gaat me te ver om te snappen!
pi_117995115
Ik zat nog ff te denken....

Hoe zet je in de macro dat:
Bij openen van het bestand word er in cel Z1 een nul gezet.Daarna de rest van de code over het sorteren doorlopen en dan saven en opslaan.
Als daarna nog een keer het bestand word geopend en die "ziet" in cel Z1 een nul staan dat hij dan niet sorteert en ook niet meer saved maar gewoon sluit.
Dan ben ik er toch ook? (weet alleen niet hoe die code er dan uit moet zien maar ik denk iets met If Then en Go To)
  maandag 15 oktober 2012 @ 13:43:15 #77
62215 qu63
..de tijd drinkt..
pi_117995704
quote:
0s.gif Op maandag 15 oktober 2012 11:36 schreef Frixel het volgende:

[..]

Echt heel erg bedankt voor de moeite hoor maar ik haak af.
Dit gaat me te ver om te snappen!
De csv wordt dagelijks gemaakt, toch?

Kan je niet een macro schrijven die eerst checkt of er al een .xlsx is (die dus netjes gesorteerd opgeslagen is), en zo niet deze aanmaakt? En dat deze dus netjes op volgorde gemaakt wordt.

En dan ook nog een check op datum, verwijder alle .xlsx-bestanden die niet van vandaag zijn ofzo?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_117995875
quote:
0s.gif Op maandag 15 oktober 2012 13:43 schreef qu63 het volgende:

[..]

De csv wordt dagelijks gemaakt, toch?

Kan je niet een macro schrijven die eerst checkt of er al een .xlsx is (die dus netjes gesorteerd opgeslagen is), en zo niet deze aanmaakt? En dat deze dus netjes op volgorde gemaakt wordt.

En dan ook nog een check op datum, verwijder alle .xlsx-bestanden die niet van vandaag zijn ofzo?
Foutje van mij maar wekelijkse update en bestand word vervangen door bestaand bestand met dezelfde naam.
  maandag 15 oktober 2012 @ 13:50:07 #79
62215 qu63
..de tijd drinkt..
pi_117995949
quote:
0s.gif Op maandag 15 oktober 2012 13:47 schreef Frixel het volgende:

[..]

Foutje van mij maar wekelijkse update en bestand word vervangen door bestaand bestand met dezelfde naam.
Nou ja, dan kan mijn verhaal nog steeds, maar dan wekelijks :P

Met je macro de bestandsdatum van je csv controleren, als die nieuwe is dan je xslx een nieuw xlsx maken, zo niet dan gebruik je de netjes gesorteerde xlsx :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_117996778
quote:
0s.gif Op maandag 15 oktober 2012 13:50 schreef qu63 het volgende:

[..]

Nou ja, dan kan mijn verhaal nog steeds, maar dan wekelijks :P

Met je macro de bestandsdatum van je csv controleren, als die nieuwe is dan je xslx een nieuw xlsx maken, zo niet dan gebruik je de netjes gesorteerde xlsx :)
Tja, makkelijker gezegt dan gedaan...
pi_118011803
quote:
0s.gif Op maandag 15 oktober 2012 09:20 schreef Frixel het volgende:
Ik kom er nog steeds niet uit met onderstaande macro.

Mijn probleem is dat de file .bestand niet fysiek geopend dient te worden en dat likt dan ook met de optie GetObject ("P:\bestand.csv")
Daardoor is het wel aktief en zichtbaar in VBA.
Dan moet het bestand dus gesorteerd worden (kolom H) en dat wil maar niet lukken als het bestand fysiek door excel geopend is.
Volgens mij is de grote fout die je maakt, dat je je object niet aan een variabele koppelt. Je moet in mijn ogen iets in deze trant ondernemen:
1
2
3
4
5
6
7
Sub test()
Dim xl As Excel.Application
Dim a As String
Set x1 = GetObject("P:\bestand.csv")
a = x1.Sheets("Blad1").Range("A1").Value
x1.Close
End Sub

Door je X1 kan je hier tenminste naar het betreffende bestand verwijzen en er iets mee doen. Ook is het in mijn ogen niet onbelangrijk dat je je object weer kunt sluiten.
  dinsdag 16 oktober 2012 @ 13:40:50 #82
176485 Champy
Usericon was RaymondK
pi_118035979
Beste mensen,

ik ben bezig met een excel sheet waarin de afdeling verkoop itemnummers in kan geven, en dan verschijnen vanzelf verschillende prijzen en informatie. Er gebeurt echter iets heel raars als er een opgeslagen bestand geopend wordt waar dezelfde item nummers gebruikt worden met een oude prijs. Deze prijsinformatie wordt uit een andere sheet gehaald die dagelijks bijgewerkt wordt.

Een voorbeeld om het duidelijk te maken.
Er is vorige week een bestand aangemaakt en opgeslagen met itemnummer ABC voor prijs 1,11
2 dagen later wordt deze prijs aangepast naar 1,23 in het bronbestand.
3 dagen hierna wordt een nieuwe sheet aangemaakt, met item ABC, en de prijs 1,23 verschijnt.
Om even te kijken wat vorige keer de prijs en marge was wordt de oude sheet van vorige week geopend, de gelinkte info wordt niet bijgewerkt zodat de oude prijzen er nog staan, en inderdaad, 1,11 verschijnt hier als prijs.
Echter als er nu weer teruggeschakeld wordt naar de sheet van deze week staat daar ook de prijs van 1,11, terwijl eigenlijk de prijs van 1,23 daar hoort te staan.
Dubbelklik op deze cel, druk op enter en de juiste prijs verschijnt weer.

De informatie over de prijs wordt opgehaald door middel van een vertikaal zoeken formule uit het bronbestand. In het bronbestand van de prijzen wordt de nieuwe prijs niet gewijzigd in de oude. Er wordt in de nieuwe sheet niet gekoppeld aan de oude.

Er is dus totaal geen relatie tussen de nieuwe en de oude sheet,maar wel worden de "oude" prijzen over genomen. Iemand enig idee waar dit door veroorzaakt wordt?

Alvast bedankt voor het meedenken, en ik kan me voorstellen dat het geen heel duidelijk verhaal is.

Edit: Als zowel het oude als een nieuw bestand open staan, en ik typ in de nieuwe een itemnummer in wat ook in de oude staat, verschijnt de prijs van de oude, en niet de prijs van uit het bronbestand.

[ Bericht 5% gewijzigd door Champy op 16-10-2012 15:05:57 ]
Op zaterdag 17 mei 2014 13:15 schreef stinkie het volgende:
zodra ik een echt gespierde en droge pt'r tegenkom, ga ik ik mijn blote reet deadliften bij een gays 'r us gym
pi_118055852
quote:
0s.gif Op dinsdag 16 oktober 2012 13:40 schreef Champy het volgende:
Beste mensen
etc
Het verhaal is wat lastig te volgen en ook niet te controleren van afstand. Wellicht gebruik je dezelfde bestandsnamen waardoor excel naar het verkeerde geopende bestand blijft kijken. In mijn ogen dien je de registratie van je (bron)prijzen te veranderen. Je zou niet afhankelijk moeten zijn van de oude versie, er dient 1 volledige juiste versie te zijn. Dit kan je bijvoorbeeld realiseren door gebruik te maken van de datum wanneer je prijzen muteert en de datum van je verkoop.

Bijgevoegd voorbeeld uitgewerkt: http://www.mijnbestand.nl/Bestand-EX3JHTVGYJ7G.xlsx
De truc zit natuurlijk in de prijsformule:
=SOMMEN.ALS(Prijs;Startdatum_Prijs;"<"&A4;Einddatum_prijs;">="&A4;Artikelnummer;"="&B4)

De vergelijkingen die hier gemaakt worden is dat de einddatum van je artikelprijs groter moet zijn dan de huidige verkoopdatum en de startdatum van je artikelprijs moet kleiner zijn dan je verkoopdatum. Daarnaast is er nog een match op je artikelnummer.

Excel berekent hier de som van alle prijzen die voldoen aan die criteria. Aan jou de taak om daar altijd maar 1 uitkomst juist op te laten zijn en op deze manier kan je altijd je volledige prijslijst overzien (en niet alleen van een betreffende dag).

Uiteraard luistert het wel heel nauw om te kijken naar wil je nu 'groter' hebben of 'groter of gelijk aan', maar daar ga je vast uitkomen.
--
Edit:
Overigens nog beter plaats je de prijzen niet in Excel maar in een ander ding zoals een database, maar voor de kleinere ondermening zal de prijslijst op 1 vaste locatie ook wel werken.

[ Bericht 8% gewijzigd door snabbi op 16-10-2012 21:23:37 ]
  woensdag 17 oktober 2012 @ 10:14:37 #84
176485 Champy
Usericon was RaymondK
pi_118072585
Snabbi, dank je voor het meedenken, denk echter dat je het probleem niet juist begrepen hebt, en dat is ook niet zo raar aangezien het nogal lastig omschrijven is. Daar komt bij dat prijzen ook naar beneden kunnen wijzigen, niet alleen naar boven.
De bestanden hebben niet dezelfde naam, onder verschillende namen opgeslagen, het zijn echter wel kopieen van een basisbestand wat leeg is.

En je tip over een database klopt inderdaad, echter heb ik daar totaal niets over te zeggen helaas. Het is geen kleine onderneming, maar soms nogal eigenwijs.

In ieder geval bedankt, ik ga nog even verder met mn zoektocht :)
Op zaterdag 17 mei 2014 13:15 schreef stinkie het volgende:
zodra ik een echt gespierde en droge pt'r tegenkom, ga ik ik mijn blote reet deadliften bij een gays 'r us gym
pi_118098057
Je moet het ook niet zien als het adresseren van je probleem zelf, maar een workaround.
Overigens zie ik geen reden waarom prijzen niet naar beneden zouden kunnen. Er is altijd maar 1 prijs die je een begindatum en een einddatum mee geeft. Je zou eventueel ook opslagen en afslagen kunnen noteren, maar ik vermoed dat het dan heel onoverzichtelijk gaat worden.

Kijk in het voorbeeld bijvoorbeeld hoe de prijs tot een datum wordt gehanteerd en vanaf een andere datum er maar 1 prijs geldt. Plaats dat tabblad met de generieke prijzenlijst op 1 vaste locatie en je hebt nooit meer verschillende versies van je prijslijst. Door het gebruik van de datum blijf je ook altijd backwards-compatible. (de werkelijke gedachte er achter is natuurlijk, als je 1 prijslijst hebt kan je nooit de verkeerde versie hebben)

[ Bericht 12% gewijzigd door snabbi op 17-10-2012 21:04:36 ]
  donderdag 18 oktober 2012 @ 09:21:05 #86
176485 Champy
Usericon was RaymondK
pi_118115288
Hey Snabbi,
probleem daarmee is, is dat er geen datums aan de prijslijst hangen, helaas. Kan ik ook niets aan doen, moet werken met wat me aangeleverd wordt over het algemeen.
Echter, het is opgelost. De waardes werden opgehaald met een verticaal zoeken, deze heb ik vervangen door een index-vergelijken constructie, en het probleem doet zich gelukkig niet meer voor!
Zeer bedankt voor het meedenken!
Op zaterdag 17 mei 2014 13:15 schreef stinkie het volgende:
zodra ik een echt gespierde en droge pt'r tegenkom, ga ik ik mijn blote reet deadliften bij een gays 'r us gym
pi_118131647
Iemand al eens geprobeerd om een organogram te maken vanuit een draaitabel? (Excel 2010)
  vrijdag 19 oktober 2012 @ 12:08:59 #88
179024 Huppelmuts
Ja...nou...NEE dus!
pi_118165898
Iemand enig idee hoe ik het aantal dagen zichtbaar krijg ipv een raar getal zoals: 40924
?

-O-


Gevonden *O*

[ Bericht 25% gewijzigd door Huppelmuts op 19-10-2012 12:38:42 ]
If God was a woman, wouldn't sperm taste like chocolat?
[b]AirwiN schreef [/b]
De posts van Huppelmuts onderscheiden zich toch al door hun grammaticale correctheid en scherpe spitsvondigheden? Daar heb je geen UI voor nodig om ze te herkennen.
  vrijdag 19 oktober 2012 @ 22:21:30 #89
62215 qu63
..de tijd drinkt..
pi_118191262
quote:
0s.gif Op donderdag 18 oktober 2012 16:47 schreef kostertim het volgende:
Iemand al eens geprobeerd om een organogram te maken vanuit een draaitabel? (Excel 2010)
Nope, maar volgens mij kan je dat beter met Visio doen, die kan ook Excel als input verwerken.
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_118192739
quote:
0s.gif Op vrijdag 19 oktober 2012 22:21 schreef qu63 het volgende:

[..]

Nope, maar volgens mij kan je dat beter met Visio doen, die kan ook Excel als input verwerken.
Ja klopt inderdaad wel denk ik, hebben we alleen niet geïnstalleerd staan op onze werk pc's. Heb het besteld, bedankt voor je tip!
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')