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

Coördinaten, optellen..

Status
Niet open voor verdere reacties.

hypercube

Gebruiker
Lid geworden
9 dec 2007
Berichten
85
Hallo,

Ik zit met het volgende probleem en ik dacht dat excel dat misschien wel kon oplossen. Ik heb ongeveer 100 coördinaten/getallen en dat ziet er zo uit:

432334.34, 490645.23, 434523.76
896053.54, 295934.34, 239029.29
etc.. (x, y, z)

Nu wil ik bij alle X-en 500 optellen, bij Y 400 optellen, en bij Z 200 aftrekken. Ze staan allemaal onder elkaar maar de 3 coördinaten hebben samen maar 1 hokje in gebruik, dus niet 3.

Is dit mogelijk met excel?

Alvast bedankt,
Martijn
 
Martijn

Gebruik Data > Tekst naar kolommen om de coördinaten in 3 kolommen te splitsen.

Vervolgens in een cel 400 zetten, die cel kopiëren, kolom 1 selecteren, Bewerken > Plakken Speciaal > Optellen > OK doen.

Rest is gelijkaardig.

Wigi
 
Het gaat mij er namelijk om dat ik alleen die getallen verander maar daarna moet het nog wel bruikbaar zijn natuurlijk..
Ik wil het namelijk kopieëren naar een ander programma, niet excel.
 
Sorry het eerste probleem is ook nog niet opgelost. er komt een punt bij als ik dat doe dus dan word het 0.000.000 bijvoorbeeld.

En ik ben niet zo goed met excel, wat bedoel je precies met die formule?:o
 
Hypercube, Gezien je reactie....
En ik ben niet zo goed met excel
...weet ik niet of ik je nu een hele handige oplossing bied. Ik heb namelijk ff een functie voor je geschreven die precies doet wat je vraagt.

Code:
Function Muteer(sInhoud As String) As String
Dim varTemp As Variant
Dim iGetal As Integer
    
    varTemp = Split(sInhoud, ", ")
    
    For i = 0 To 2
        iGetal = Choose(i + 1, 500, 400, -200)
        varTemp(i) = Replace(CDbl(Replace(varTemp(i), ".", ",")) + iGetal, ",", ".")
    Next i
    
    Muteer = Join(varTemp, ", ")

End Function
Deze functie moet worden weggeschreven in een gewone module van je Visual Basic Editor en je kan 'm vervolgens aanroepen in je sheet door =muteer(A1) in bijvoorbeeld cel B1 op te geven (met voorwaarde dat je 3 getallen in cel A1 staan).

Groet, Leo
 
Laatst bewerkt:
Beste Ginger ;)

Deze code zal goed van pas komen voor hypercube !

Enkel als het getal eindigd op 80 zal het na uitvoeren van de code 8 te zien zijn, de nul is dan achteraan verdwenen.

Is hier er reden of een oplossing voor ?

Groetjes Danny. :thumb:
 
Danny147, Dank voor 't compliment en dank voor je scherpte!:thumb:

Bij deze...
Code:
Function Muteer(sInhoud As String) As String
Dim varTemp As Variant
Dim iGetal As Integer
    
    varTemp = Split(sInhoud, ", ")
    
    For i = 0 To 2
        iGetal = Choose(i + 1, 500, 400, -200)
        varTemp(i) = Replace([COLOR="Blue"]Format([/COLOR]CDbl(Replace(varTemp(i), ".", ",")) + iGetal[COLOR="blue"], "0.00")[/COLOR], ",", ".")
    Next i
    
    Muteer = Join(varTemp, ", ")

End Function

Groet, Leo
 
Of als je het liever in formulevorm hebt :
Code:
=SUBSTITUEREN(WAARDE(SUBSTITUEREN(LINKS(A1;9);".";",")+500);",";".")&", "&SUBSTITUEREN(WAARDE(DEEL(SUBSTITUEREN(A1;".";",");12;9)+400);",";".")&", "&SUBSTITUEREN(WAARDE(SUBSTITUEREN(RECHTS(A1;9);".";",")-200);",";".")
met in A1 de coördinaten.
 
Het werkt!! Hartstikke bedankt ginger :)
Nog 2 vragen :P

1. Hoe kopieer ik de getallen vanuit de cel, want als ik probeer te kopieeren kopieert hij het muteer woord.
2. Hoe zet ik die funcite om zodat hij deze line kan aanpassen, want daar gaat het eigenlijk om:

CreateDynamicObject(647, -443.1456, -3553.3684, 13.1233, 0.0000, 0.0000, 0.0000);

(ik bedoel, is het mogelijk om de 2e, 3e, 4e, 5e, en 6e erbij in die functie te zetten, dat zou fantastisch zijn, het 1e getal mag hetzelfde blijven).

Nog eens onwijs bedankt voor de hulp :thumb:
 
1. Hoe kopieer ik de getallen vanuit de cel, want als ik probeer te kopieeren kopieert hij het muteer woord.

1. Kopieer de cellen, maar doe de plakbeweging met Plakken Speciaal > Waarden.

2. Hoe zet ik die funcite om zodat hij deze line kan aanpassen, want daar gaat het eigenlijk om:

CreateDynamicObject(647, -443.1456, -3553.3684, 13.1233, 0.0000, 0.0000, 0.0000);

2. Spendeer tijd aan de code van Ginger, het gaat maar om 2 regels:
Code:
 For i = 0 To 2
        iGetal = Choose(i + 1, 500, 400, -200)

Wigi
 
waar slaat precies die i + 1 op? Snap ik niet helemaal :p

edit: ik heb van alles geprobeerd maar zoals ik al heb gezegd, ik ben niet zo goed met excel en Visual Basic. Dit is zelfs ze eerste keer dat ik VB gebruik :/
Hoe moet je bijvoorbeeld aangeven dat hij de oude waarde neemt en en niks mee doet? Met welke letter of symbol..

Sorry, maar als iemand mij kan helpen zou dat mooi zijn.
 
Laatst bewerkt:
Misschien l u l l i g dat ik het zeg, maar "beginners" hebben nog meer reden om in de helpfiles te gaan kijken. Specifiek moet jij weten wat een For... Next lus is, en wat Choose is.

Wigi
 
Ja ik ben het eigenlijk wel met je eens hoor, dat zeg ik ook altijd.. (ander scripting type wat ik wel kan lol). Maar gelukkig heb ik al een oplossing gevonden. Er bestond een programmatje waarmee je in CMD dan de waardes invult die erbij moeten komen en dan telt hij dat er allemaal bij op, echt fantastisch :P

iig bedankt voor alle hulp!! Ben al een stuk wijzer geworden :P
 
Of

Code:
Function muteer(c0)
  sq = Split(c0, ", ")
  For j = 0 To 2
    c0 = Replace(c0, sq(j), Replace((sq(j) + 10000 * (5 - IIf(j = 2, 7, j))) / 100, ",", "."))
  Next
  muteer = c0
End Function
 
Maar snb, waar staan die 500 400 en -200 dan? En laat hij dan dat DynamicObject gebeuren enzo staan?
Edit: wanneer ik dat gebruik verplaats de punt naar 2 plaatsen voor het laatste getal.
 
Laatst bewerkt:
Als je met een tekst met een punt gaat rekenen maakt VBA er een getal zonder punten van; daarom moet je er geen 500, maar 50000 bij optellen

for j=0 to 2
x=10000 *(5-j)
next
in de eerste lus is x : (5 -0)* 10000 (50000)
in de tweede lus is x: (5-1)*10000 (40000)
in de derde lus is x: (5-2)*10000 (30000)
de derde lus moeten we dus corrigeren.
als we -20000 als uitkomst willen krijgen dan zullen we in de derde lus van het getal5 7 af moeten trekken

x: (5-7)*10000=-20000
In de formule:
for j=0 to 2
x=10000 *(5-iif(j=2,7,j))
next
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan