Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Excel 2007 - tekstvaktekst splitsen naar cellen *

Pagina: 1
Acties:

  • Joost.B
  • Registratie: Mei 2006
  • Laatst online: 11-10 19:25
Ik probeer wat functies te achterhalen voor een excel-sheet die ik gebruik voor mijn studie. Ik wil een functie inbouwen die specifieke delen tekst in een tekstvak weet te vinden en vervolgens te kopiëren naar een andere cel. Nu ik al een tijdje bezig ben met het zoeken naar een gelijke functie zit ik compleet vast. Alle formules die er maar iets van weg hebben wat ik zoek, zijn te specifiek of te complex.

Ik heb een klein voorbeeld toegevoegd van wat voor functie ik zoek:
http://www.2shared.com/file/8255991/3e51f59/Book1.html

Je kopieert een vast stuk tekst in een tekstvak. Het enige verschil zijn de waardes die veranderen en deze wil ik automatisch splitsen en in een andere cel zetten. Dit wil ik natuurlijk om veel grotere schaal doen dadelijk maar ik krijg er met geen mogelijkheid beweging in. Daarom hoop ik dat hier iemand is die me kan helpen.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:06

Dido

heforshe

Wat wil je nou van waar naar waar kopieren, en wanneer wil je er "waardes" uithalen? Je verhaal is wat warrig (en je link kan ik hiervandaan niet bij).

Wil je 100 keer de tekst "De waarde van object XYZ is 999 euro", waarbij XYS en 999 vanuit een lijstje gevuld worden, of heb je 100 keer die tekst en wil je de waardes van XYS en 999 eruit halen en in een lijstje zetten?

Wat betekent mijn avatar?


  • Joost.B
  • Registratie: Mei 2006
  • Laatst online: 11-10 19:25
De bedoeling is dat de tekst die geplakt wordt in het tekstvak, gesplitst wordt, en de hoeveelheden vervolgens naar een bijbehorende cel gekopieerd wordt. De excel-file maakt een hoop duidelijk.

Tekst: '3 cookies, 2 bananas and 4 bottles of beer'

Resultaat:

Cookies: 3
Bananas: 2
Bottles of beer: 4

Alleen kunnen de hoeveelheden veranderen maar de geplakte tekst zal altijd dezelfde volgorde houden.
De tekst kan bijvoorbeeld zo worden:

Tekst: '10 cookies, 5 bananas and 200 bottles of beer'

Waaruit het volgende rolt:

Cookies: 10
Bananas: 5
Bottles of beer: 200

PS: ik ben titel van dit topic vergeten aan te vullen, misschien een suggestie om de titel naar 'Excel 2007 - tekst tekstvak splitsen naar losstaande cellen' te veranderen.

Verwijderd

dit zal toch met vba moeten. onderstaande functie doet het gewenste. rekening houdend met het voorbeeld bestand, zal onderstaande werkbladformule het juiste getal opleveren.
als argumenten geef je de textboxnaam mee (kan zelf een formule zijn), en de naam van het item waarvoor je het aantal wil terugkrijgen.
code:
1
=extractnumber("textbox 1";"Cookies")

en hieronder de bijbehorende vbafunctie die de extractie effectief uitvoert:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function ExtractNumber(ByVal ShapeItem As String, ByVal TextItem As String) As Double
  Dim Number          As Variant
  Dim Numbers         As Variant
  Dim TextItems       As Variant
  Dim ShapeObject     As Shape
  
  Set ShapeObject = ActiveSheet.Shapes(ShapeItem)
  TextItems = Split(LCase(ShapeObject.OLEFormat.Object.Text), lcase(TextItem))
  If (0 < UBound(TextItems)) Then
    Numbers = Split(TextItems(0), " ")
    For Number = UBound(Numbers) To LBound(Numbers) Step -1
      If IsNumeric(Replace(Numbers(Number), ",", ".")) Then
        ExtractNumber = CDbl(Replace(Numbers(Number), ",", "."))
        Exit Function
      End If
    Next
  End If
End Function

[ Voor 2% gewijzigd door Verwijderd op 07-10-2009 16:47 . Reden: kleine aanpassingen formule & code ]


  • Joost.B
  • Registratie: Mei 2006
  • Laatst online: 11-10 19:25
Hmm ben het nu al een tijdje aan het proberen maar ik krijg die formule-regel niet eens normaal aan de praat. Ik begrijp niet welke waardes ik moet veranderen. Hij geeft aan dat ik 'LINKS' moet veranderen maar ik begrijp niet welke term waarop gebaseerd is.

Ahh nu werkt het. Werkt als een trein. Ook als ik de complete tekst verander. Heel hartelijk bedankt. Ik ga het eens verder uitvlooien en proberen te programmeren in de grote sheet. Dank je voor je hulp!

[ Voor 51% gewijzigd door Joost.B op 07-10-2009 16:54 ]


Verwijderd

de formule is dus
code:
1
=extractnumber("textbox 1";"Cookies")

eerste argument is de naam van het tesktvak (zie je in de formulebalk nadat je het tekstvak hebt aangeklikt), tweede argument is de naam van het item (bv. cookies) waarvan je het aantal in een cel wil plaatsen.
bij een engelstalige excel worden de argumenten meestal gescheiden door een komma ipv puntkomma.
beide argumenten zijn dus veranderlijke waarden, die, zoals eerder gezegd, eventueel dmv een andere formule opgehaald kunnen worden of gehardcodet kunnen worden.
deze formule is een zogenaamde user defined function, en werkt dus alleen indien de vba-code uit m'n vorige post in de bijbehorende werkmap geplaatst wordt.

  • Joost.B
  • Registratie: Mei 2006
  • Laatst online: 11-10 19:25
Het klopt precies. Alles werkt zoals ik beschreven heb. Hij pakt de cijfers uit de tafel zoals bedoeld is. Alleen nu verander ik die cijfers en dan veranderen de cellen niet automatisch mee. Bijvoorbeeld nu komt er een set waarbij 200 bananen nodig zijn. Dan plak ik die in het textvak maar beneden blijft hij op 5 staan. Toch bedankt tot dusver. Erg handige tool!


Heb het nu voor elkaar gekregen met een andere macro over deze heen. Werkt in principe hetzelfde er dient alleen een extra knop ingedrukt voor te worden.

[ Voor 18% gewijzigd door Joost.B op 07-10-2009 17:13 ]


Verwijderd

in de vba-udf kan je als eerste statement (vlak onder de laatste dim) application.volatile toevoegen.
mocht zelfs dat niet volstaan kan aan de formule in het werkblad +now()*0 (+nu()*0) toegevoegd worden.
Pagina: 1