characters löschen

Bild

Betrifft: characters löschen
von: simsim
Geschrieben am: 04.05.2015 20:06:38

Hallo VBA Fans,
ich hätte eine Frage, ich möchte in einer Zelle zeichen löschen, wenn sie nicht in der Klammern, z.B. qwweeererr[test]hjhjhjki d.h. alles, was vor test und danach soll gelöscht werden, der Wert zwischen Klammern ist nicht fest, es kann alles sein.
Danke für die Unterstützung

Bild

Betrifft: AW: characters löschen
von: Hajo_Zi
Geschrieben am: 04.05.2015 20:10:41

Tabelle3

 PQ
8qwweeererr[test]hjhjhjki test

verwendete Formeln
Zelle Formel Bereich N/A
Q8=TEIL(P8;SUCHEN("[";P8)+1;SUCHEN("]";P8)-SUCHEN("[";P8)-1)  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.02 einschl. 64 Bit




Bild

Betrifft: Da du die VBA-Fans angesprochen hast, ...
von: Luc:-?
Geschrieben am: 04.05.2015 20:22:35
…simsim,
wie wär's als Kompromiss zwischen VBA und FormelLösung mit einer UDF in einer Fml?
A1: qwweeererr[test]hjhjhjki
Fml:=MaskOn(MaskOn(A1;"mrk[]");"[]";1)
Gruß, Luc :-?

Bild

Betrifft: AW: Da du die VBA-Fans angesprochen hast, ...
von: Matthias L
Geschrieben am: 04.05.2015 20:39:25
Hi

 AB
1qwweeererr[hey Luc das passt :-)]hjhjhjkihey Luc das passt :-)

Formeln der Tabelle
ZelleFormel
B1=MaskOn(MaskOn(A1;"mrk[]");"[]";1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Bild

Betrifft: Sag ich ja, ...
von: Luc:-?
Geschrieben am: 05.05.2015 02:29:52
…Matti,
aber der Fragesteller scheint ja eine selbst zusammen­gestellte Einzel­Lösung einem universellen Fertig-Tool vorzuziehen, allerdings ist das auch schon mindestens 10 Jahre alt. Trotzdem decken die meisten meiner UDFs immer mehr Probleme ab, als die jeweilige Auf­gaben­stellung beinhaltet. Das ist dann wie bei Xl-Fktt, denn denen analog sollen sie einsetzbar sein, was einigen Leuten wohl immer noch nicht so recht klar zu sein scheint…
Gruß, Luc :-?

Bild

Betrifft: AW: Sag ich ja, ...
von: Daniel
Geschrieben am: 05.05.2015 08:07:46
Hi Luc
Deine Lösung ist neunmal keine VBA-Lösung, sondern immer noch eine Formel Lösung.
Der Formel Text ist zwar etwas kürzer, dafür muss man aber erst ein AddIn installieren, damit Excel die Funktionen erkennt.
Deine UDFs mögen zwar viele Problemfälle abdecken, aber solange du nicht erklärst was sie alles können und wie die Parameter gesetzt werden müssen, sind sie für den Anwender such nicht hilfreicher als eine für sein Problem angepasste Spezialösung.
Gruß Daniel

Bild

Betrifft: Das steht bei mir (zumindest bei neueren UDFs) ...
von: Luc:-?
Geschrieben am: 05.05.2015 20:28:52
…immer in Kurzfassung über dem PgmCode, Daniel,
das macht sonst kaum mal jemand. Außerdem erklären sich die Argumente (zumindest bei kurzen UDFs) oft selbst.
Das ist doch nicht etwa deiner Aufmerksamkeit entgangen…?
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: AW: Das steht bei mir (zumindest bei neueren UDFs) ...
von: Daniel
Geschrieben am: 05.05.2015 20:48:28
wenn ich mir die von dir hier verlinke Version von MaskOn anschaue:

Function MaskOn(ByVal Text As String, ByVal ZTyp As String, Optional ByVal ZTmask) As String
    Dim i As Integer, a As String, d As String, z As String, ZusZ As String
    Const b = "abcdefghijklmnopqrstuvwxyzäöü", c = "0123456789", e = " +-,.E " 'letztZ=Chr(160)
    If IsMissing(ZTmask) Then
        ZTmask = 1
    ElseIf IsNumeric(ZTmask) Then
        ZTmask = ZTmask Mod 2 + 1
    Else
        ZusZ = ZTmask: ZTmask = 1
    End If
    For i = 1 To Len(Text)
        Select Case lcase(Left(ZTyp, 3))                            'feste ZKomb in ZTyp
        Case "gkz", "buz", "bz", "bzi", "len", "lin", "a0", "an", "anu"
            a = c & b & "ß": z = lcase(Mid(Text, i, 1))
        Case "gk", "gkb", "bst", "buc", "let", "lit"
            a = b & "ß": z = lcase(Mid(Text, i, 1))
        Case "kb", "mil", "min"
            a = b & "ß": z = Mid(Text, i, 1)
        Case "gb", "cal", "cap"
            a = UCase(b): z = Mid(Text, i, 1)
        Case "zf", "dg", "zif", "dig", "num", "00", "000"
            a = c: z = Mid(Text, i, 1)
        Case "zw", "nv", "zah", "zwt", "nvl", "+0", "0.-"
            a = c & e: z = Mid(Text, i, 1)
        Case "mar", "mrk", "mkt", "mtx"
            z = Mid(Text, i, 1)
            If z = Left(Right(ZTyp, 2), 1) Then
                a = z: d = z
            ElseIf z = Right(ZTyp, 1) Then
                a = z: d = z
            ElseIf d = Left(Right(ZTyp, 2), 1) Then
                a = z
            Else: a = ""
            End If
        Case Else                                                   'freie ZKomb in ZTyp
            a = ZTyp: z = Mid(Text, i, 1)
        End Select
        a = a & ZusZ
        On Abs(CInt(InStr(a, z) > 0)) + ZTmask GoSub lm, zm, lm
    Next i
    MaskOn = WorksheetFunction.Substitute(Trim(MaskOn), "  ", " ")
    Exit Function
lm: Rem reduziert maskierte Zeichen (mehrere hintereinander als 1 blank)
    MaskOn = MaskOn & IIf(Right(MaskOn, 1) = " ", "", " ")
    Return
zm: Rem übernommene Zeichen
    MaskOn = MaskOn & Mid(Text, i, 1)
    Return
End Function
kann ich nichts davon finden.
Weder eine Beschreibung, noch Kommentare oder eine selbsterklärende Programmierung mit sprechenden Variablennamen oder so.
Bis ich mir da die möglichen Funktionen rausinterpretiert habe, habe ich doch wesentlich schneller ein nicht universelles Spezialmakro erstellt, welches dann genau auf meine Lösung passt, nach meinen Vorgaben dokumentiert ist.
für die Beschriebene Aufgabenstellung reicht ein Einzeiler!
Warum also dann sowas aus unsicherer Quelle auf seinem Rechner installieren?
sorry, nö danke. Dann lieber selber etwas Zeit investieren und selber programmieren.
Sollte deine Zielgruppe für solche Universalmakros Excelanwender ohne Programmierkenntnisse sein, die damit ihren Excelfunktionsumfang erweiteren können (was ja durchaus sinnvoll wäre im Bereich von Text-Funktionen), dann müsstest du erst recht genau beschreiben, was deine UDFs können und wie man sie parametrisiert, weil dieser Personenkreis erst recht nicht in der Lage ist, deinen Code zu interpretieren.
Gruß Daniel

Bild

Betrifft: Du solltest wenigstens lesen können, ...
von: Luc:-?
Geschrieben am: 06.05.2015 04:51:02
…Daniel,
denn unter dem verlinkten BT steht ja wohl deutlich, dass es sich hierbei um die Zweit­schrift einer sehr alten UDF handelt (die Erst­schrift wurde durch Änderungen der Forums­software unbrauchbar!). Deren Argumente und ihre möglichen Werte sind auch bedingt selbst­erklärend.
Diese UDF ist in ihrer letzten Version in einem AddIn enthalten, zu dem auch eine Hilfe existiert (habe ich von dir noch nicht gesehen!). Außerdem ist mir unklar, warum ein AddIn ein Problem darstellen sollte (außer bei grund­sätz­licher VBA-Sperre). Es kann genauso wie ein Standard-Xl-AddIn eingebunden wdn.

MaskOn( Text; ZTyp; ZTmask=0; ErsZ=blank)
Ergebnis:
Listentext, Zeichenfolge oder Zahl
Erzeugt redu­zierte Zeichenfolge als Listen­text über Maske laut Arg2 mit Einzel­blanks als Ersatz-/Trennzeichen
Arg2.1: anu=alf+nume­risch alf=Buch­stabe kb=Klein­buch­stabe gb=Groß­buch­stabe num=Ziffer zw=Zahlen­werte
Arg2.2: hex=Hexadezimal­zahlen ad=Zell­adresse mar‘’=Markie­rung ‘…’ [‘’=belie­bige diffe­rente Zei­chen ]
Arg2.3: belie­bige direkt einge­tragene Zeichen/kombi­nation (freie Zeichen­kombi­nation hier ggw nicht möglich)
Arg3: 0 [1 ] *nur [ohne ] Zeichen laut Arg2 oder zusätz­lich zu belas­sende Zeichen (implizit 0)
Arg4: fehlt/leer/beliebiges nicht in Arg1 enthaltenes Zeichen
Funktionsargumente:

• Arg1 → Text

Zu behandelnder Text(bezug)

• Arg2 → ZTyp

Maskentyp (vordefinierte Zeichengruppe) bzw Einzelzeichen oder
Zeichenkombination

• Arg3 → ZTmask

Wahr = Zeichen lt Arg2 werden entfernt, sonst alle anderen (implizit, ggf hier zusätzlich zu bewahrende Zeichen angeben)

• Arg4 → ErsZ

Als Ersatz für entfernte Zeichen(folgen) zu verwendendes Zeichen, Default: Leerzeichen

 Bsp1: a) M =MaskOn("5 Mann";"gb"), b) , % =MaskOn("1,6%";"num";1), c) 2,52 =MaskOn("zu 2,52 Euro";"zw")
 Bsp2: a) F0 =MaskOn("F0 byte";"hex"), b) A$1:IV1 =MaskOn("Sum(A$1:IV1)";"ad"), c) Sum =MaskOn("Sum(A:A)";"mar()";1)
 Bsp3: a) a b c =MaskOn("(a+b)*c";"( + * )";1), b) a W n =MaskOn("alle Wellen";"el";1), c) lle el =MaskOn("alle Welt";"el")

Hinweis: Im Falle von Arg2="ad" ist in Arg3 nur ein Ein­zel­zei­chen, keine Folge ein­zel­ner zusätz­lich zu bewah­ren­der Zei­chen wie in allen ande­ren Fäl­len zuläs­sig. Außer­dem muss es unmit­tel­bar vor einer erkenn­baren Zell­adresse in Arg1 auf­treten. Falls hier der soge­nannte Schnitt­men­gen­ope­ra­tor (Leer­zei­chen) auf­tre­ten kann, sollte(n) ggf (ein) ande­re(s) Zei­chen für Arg4 gewählt werden.
Achtung!
Von die­ser Ver­sion wer­den keine Z1S1- und Adres­sen ober­halb von IV65536 (xlVer­sio­nen ab 12) erkannt!
Vs 2.9b -Autor: LSr -1Pub:(2.1) 20050217herber.de -CDate: 2004/5 -LUpd:20100206n

Das 4.Argument gibt's in der alten Version natürlich nicht (immer Leer­zeichen) und beim 2.Argument ist hier auch noch keine Adress­Isolation vorgesehen.
Viel Spaß beim Selbstversuch! :-]
Qapla', Luc :-?

Bild

Betrifft: AW: Du solltest wenigstens lesen können, ...
von: Daniel
Geschrieben am: 06.05.2015 07:22:43
Ich kann schon lesen, aber für mich ist immer das relevant, was du und tatsächlich zur Verfügung stellst, und das ist nunmal der verlinkte Code.
Gruß Daniel

Bild

Betrifft: Mehr war ja von dir auch nicht zu erwarten! owT
von: Luc:-?
Geschrieben am: 06.05.2015 13:42:48
:-?

Bild

Betrifft: AW: Mehr war ja von dir auch nicht zu erwarten! owT
von: Daniel
Geschrieben am: 07.05.2015 10:05:48
naja, was erwartest du?
dass ich mich auf deinem Rechner einhacke und mir dort die noch nicht von dir veröffentliche neuste Version deiner UDFs und die Hilfedateien runterlade?

Bild

Betrifft: Du willst doch nicht etwa andeuten, dass du ...
von: Luc:-?
Geschrieben am: 09.05.2015 01:34:03
…dich dafür interessieren würdest…?!
Da du es wohl nie zu einer Vorzugsbehandlung bringen wirst, musst du dich mit dem begnügen, was den Meisten auch zV steht… ;->
Luc :-?

Bild

Betrifft: AW: Du willst doch nicht etwa andeuten, dass du ...
von: Daniel
Geschrieben am: 09.05.2015 02:03:10
natürlich habe ich mich dafür interessiert.
ich hab mir das angeschaut und festgestellt, dass die behandelten Fälle in meinem Arbeitsalltag zu selten vorkommen, als dass es sich lohnen würde, mir das zu installieren.
Ausserdem profitiere ja nicht nur ich davon, sondern alle, die sich für deine UDFs interessiern und jetzt deren volle Power nutzen können, weil sie eine Beschreibung haben, in der sie nachlesen können was die UDF alles kann.
Ich habe das nie für mich eingefordert, sonden immer nur an die gedacht, denen du die UDFs angeboten hast.
Sies mal so, wer in der Lage ist, sich als dem Code allein ohne Beschreibung den vollen Funktionsumfang abzuleiten, der kann sich solche Makros auch selber schreiben und brauchst deine Hilfe dabei nicht.
Gruß Daniel

Bild

Betrifft: Deshalb hatte ich ja diese Hilfe angefertigt, ...
von: Luc:-?
Geschrieben am: 09.05.2015 13:20:16
…Daniel,
wofür die Meisten gar keine Zeit finden, abgesehen mal davon, dass das oftmals auch nicht lohnen würde, weil deren UDFs oft auf nur ein spezifisches Problem zugeschnitten sind. Das entspräche dann der pgmmierer­üblichen Sicht auf eine Fkt als Pgmier­Hilfs­mittel. Das ist aber nicht die meine! Ich orientiere mich an dem, was die Pgmmierer des alten Xl-FktsKerns beabsichtigt hatten — Universalität im Rahmen der jeweiligen Aufgaben­stellung der Fkt. Das beachten nur sehr Wenige! Ich freue mich, wenn ich mal, sehr selten, auf solch ein Bsp stoße. Leider erkennt der Nach­nutzer dann oft nicht, was er da hat. Zu sehr sind die Nutzer bei VBA auf „Anpasse­ritis“ fixiert…
Luc :-?

Bild

Betrifft: AW: Deshalb hatte ich ja diese Hilfe angefertigt, ...
von: Daniel
Geschrieben am: 09.05.2015 16:24:05
Hi
Was verstehst du unter 'Univtsalität im Rahmen der Aufgabenstellung"
Versuchen, Probleme zu lösen, die noch gar nicht da sind aber vielleicht mal auftreten könnten?
Funktionen immer als Variant auslegen?
Welche Eigenschaften muss ein Code haben, damit du ihn als universell anerkennst?
Gruß Daniel

Bild

Betrifft: Die gleichen, die bspw KKLEINSTE im GgSatz ...
von: Luc:-?
Geschrieben am: 10.05.2015 03:24:43
…zu RANG hat, Daniel,
also zuvorderst auch Verarbeitung von Datenfeldern (aus Ausdrücken → expressions bzw Matrix­Konstanten), was in VBA idR nur mit Variant-Argumenten möglich ist. Ebenso ein Variant-Ergebnis, damit ggf auch qualifizierte Fehler­meldungen ausgegeben wdn können.
Wünschenswert, aber nicht immer erforderlich, wäre volle Matrix­formel­taug­lichkeit, zumindest in Bezug auf das Haupt­Argument. Für Neben­Argumente muss das nur gelten, wenn über die xl-typische Werte­Variation bereichs­bezogener Angaben hinaus ganze Daten­felder verarbeitet wdn sollen oder dieses ermöglicht wdn soll. Ich meine also eine Fkt, die mit allen oder wenigstens möglichst vielen existie­renden Xl-Gegeben­heiten umgehen kann, nicht mit evtl zukünftigen (dieses Risiko bleibt). Ebenso erwarte ich auch keine „Handy-Funk­tion“, die ganz verschiedene Dinge miteinander vereint. Das entspräche eher einer Über­speziali­sierung als Univer­salität.
So kann eine Text­Fkt auf der Basis von Split bzw Join schon mal (eine) echte Zahl(en) liefern dürfen, wenn ihr Ergebnis numerisch ist, muss es aber nicht unbedingt.
Wenn du dir die in Foren geposteten UDFs ansiehst, wirst du schnell feststellen, dass die Mehrzahl diese Kriterien nicht erfüllt.
Darüber hinaus habe ich noch einige andere Maximen, die aber hier nicht relevant sind. Gleiches gilt für einiges Andere, mit dem der Bedien­komfort erhöht wdn kann, oder diverse Sicherungs­maß­nahmen (damit ist nicht die Anwendungs­sicherheit gemeint!).
Luc :-?

Bild

Betrifft: AW: erstmal Danke
von: Daniel
Geschrieben am: 10.05.2015 13:21:36
für deine ausführlichen Erläuterungen.
diese qualtitativen und funktionalen Anforderungen an eine UDF sind sicherlich gut richtig und sinnvoll, wenn es sich um Funktionen handelt, die für die allgemeine Verwendung in ein AddIn oder sonstige Programmbibliothek geschrieben werden.
allerdings ist der Aufand, alle diese Anforderungen abzudecken dann doch recht gross.
Für eine Funktion, die nur innerhalb eines Projekts eingesetzt wird, halte ich es für sinnvoller, diese auf sie auf die tatsächlich vorhandenen Anforderungen auszulegen, weil das den Aufwand dann doch deutlich reduziert.
Desweiteren ist es auch gar nicht mein Ziel, den Fragesteller hier im Forum mit einer Fertiglösung zu beglücken, die er sich nur noch installieren muss.
Wer sowas haben will, soll sich an einen echten Profi wenden.
Auch bin ich nicht der Ansicht, dass ein Forum eine vernünftige Aus- oder Weiterbildung ersetzen kann und soll.
Es ist vielmehr mein Ziel, den Fragesteller soweit zu unterstützen, dass er sein Problem mit den vorhandenen Mitteln (Excel, VBA) selber und eigenständig lösen kann.
Dazu gehört, dass er mein Programmbeispiel nachvollzieht und versteht, und dann selber progrogrammieren kann. Die meisten Fragesteller hier wären damit wahrscheilich überfordert, wenn ich ihnen einen Lösung die deinen Ansprüchen genügen würde, zeigen.
Wenn jemand eine "allgemeingültige, universelle" UDF haben will, darf er sich diese gerne selber schreiben.
Wenn er Fragen dabei hat, werde ich sie ihm beantworten, wenn ich es kann.
Aber ich werde ihm nicht die fertige UDF erstellen, zumindest nicht im Forum und nicht lau.
Gruß Daniel

Bild

Betrifft: AW: um dafür noch mal ein Beispíel zu bringen:
von: Daniel
Geschrieben am: 10.05.2015 13:59:37
was den Unterschied zischen einer Universellen und einer einfachen UDF ausmacht, schau dir mal deinen Lösungsvorschlag für die Problemstellung "Blattname als Formel" an:

  Function ShName(Optional ByVal lfdNr)
      Dim isVert As Boolean, aZr As Long, lZr As Long, shN() As String
      On Error Resume Next
      With ActiveWorkbook
          If IsArray(lfdNr) Then
              If IsError(LBound(lfdNr, 2)) Then
              Else: Let isVert = UBound(lfdNr, 2) = 1
                  If Not isVert Then
                      lfdNr = WorksheetFunction.Transpose(lfdNr)
                  End If
                  lfdNr = WorksheetFunction.Transpose(lfdNr)
              End If
              aZr = LBound(lfdNr): lZr = UBound(lfdNr) - aZr
              ReDim shN(lZr)
              For lZr = 0 To lZr
                  shN(lZr) = .Sheets(lfdNr(aZr + lZr)).Name
              Next lZr
              If isVert Then
                  ShName = WorksheetFunction.Transpose(shN)
              Else: ShName = shN
              End If
          ElseIf IsMissing(lfdNr) Then
              ShName = .Sheets(.Sheets.Count).Name
          Else: ShName = .Sheets(lfdNr).Name
          End If
      End With
  End Function
wenn Universalität in deinem Sinne nicht erforderlich ist, reicht:
Function ShName(Nr As Long) As String
If Nr > 0 Then If Nr <= ActiveWorkbook.Sheets.Count Then ShName = ActiveWorkbook.Sheets(Nr). _
Name
End Function
und da muss ich mir dann schon die Frage stellen, wie gross der Vorteil der Universalität ist und den entstehenden Mehraufwand rechtfertigt.
ansonsten stellt sich mir auch die Frage, warum jemand sowas zeigt, wenns ein kleiner Einzeiler auch tun würde.
Gruß Daniel

Bild

Betrifft: Auf DAS Bsp hätte ich jetzt auch verwiesen, ...
von: Luc:-?
Geschrieben am: 10.05.2015 18:09:20
…nicht die ganze UDF hier zusammenhanglos nochmals gepostet, Daniel,
da sie diese Problematik durchaus demonstriert, obwohl hier noch eine qualifizierte Fehler­Ausgabe fehlt. Ursprünglich war diese UDF tatsächlich kaum mehr als 3 Zeilen lang, was für das geschilderte Problem ausgereicht hätte.
Ich habe aber etwas gg die PC-Vermüllung mit „Eintags­fliegen“, die schon beim nächsten Mal nicht mehr einsetzbar sind. Du denkst wie ein ProfiPgmmierer, der gerade von so etwas lebt, in Projekten. Damit wäre eine Funktion nur ein Pgmmier­Hilfs­mittel und kein Universal­Werkzeug, denn es ginge ja vornehmlich um ein abgeschlossenes Projekt. Solche Fktt wären dann konsequenter­weise auch stets Private oder in solchen Modulen unter­gebracht. Den meisten Nutzern geht's aber durchaus um univer­sellere Werkzeuge, die sie in der Personal.xlsm oder einem AddIn sammeln, um sie bei Bedarf wieder­zuver­wenden. Wer soll dann in so etwas die Über­sicht behalten, wenn von einem Werkzeug x Varianten für spezifische Zwecke erfor­derlich sind? Wären die XlFktt auch nach diesem Prinzip konstruiert worden, hätte sich Xl wohl kaum gg andere Produkte durch­setzen können.
Außerdem kann auch ein Selber­macher aus meinen Bspp lernen, wie man an so etwas herangehen sollte. Das lernt er bei spezi­fischen Fktt bestimmt nicht; er müsste allgemeinere Grund­lagen erst aus einer Viel­zahl von Code­Bspp ableiten, denn das einzelne Pgm geht ja nur auf die besondere Situation ein. Und die kann sich auch mal ändern.
Richtig ist, dass es so etwas, komplett in einem AddIn und mit Hilfe*, normalerweise nicht umsonst gibt. Deshalb fehlen hier auch solche Teile (evtl voran­gestellte Hinweise sind in Kurzform, weil als Stichworte für eine spätere Hilfe gedacht). Aber, wenn man Forderungen wie die meinen vertritt, muss man auch abundzu zeigen, was man meint. Das tut der Eine oder Andere auch mal; solche Fälle sind aber sehr selten im Netz zu finden. Wer so etwas findet, hat Glück gehabt. Leider erkennt er das nicht immer.
Übrigens habe ich für den Zweck, dem die von dir zitierte UDF gewidmet ist, auch deutlich längere, umfassendere und komfortablere UDFs. Was Fml-Freaks* mit den StandardFktt in Fmln machen, mache ich mit UDF-Pgmm in Kombi mit ihrem Fml-Einsatz. Damit lernt man dann gleich 2 Dinge, wie Xl fktioniert und wie man deshalb eine univer­selle UDF für FmlEin­satz schreiben muss. Darin habe ich inzwischen schon soviel Übung, dass ich auch mal etwas mit vertret­barem Zeit­Aufwand neu schreiben kann.
Und weil das so ist, „spiele ich auch in einer anderen Liga“, die in Foren kaum vertreten ist. Nicht mehr und auch nicht weniger ist damit gemeint…! ;-]
* Hierzu ein Zitat von Alison Gopnik im Gespräch mit Stefan Klein: „In einer Serie von Experi­menten probierte meine Kollegin Laura Schulz vor den Augen einer Gruppe von Vier­jährigen an einem ziemlich kompli­zierten elektro­nischen Spiel­zeug herum. Allein gelassen, fanden die Kinder bald selbst alles heraus, was dieses Ding konnte. Anderen Jungen und Mädchen gleichen Alters zeigte Schulz gezielt ein paar Funk­tionen des Spiel­zeugs. Doch als sie ging, wieder­holten diese Kinder nur das Wenige, was sie ihnen vorge­führt hatte.“ (zitiert nach Stefan Klein, Wir könnten unsterblich sein, Fischer Tb, 2014, Ss.70-71.)
Genau das, was die 1.Gruppe getan hat, machen auch Formel-Freaks, sie verlassen sich nicht allein auf die Xl-Hilfe; mit vielen meiner UDFs kann genauso experimentiert wdn, denn uU ist dann noch mehr drin, als ich ursprünglich beabsichtigt hatte bzw mit wenigen Tests feststellen konnte. Mit auf ZellBereiche festgelegten Fktt ist man aber allzu schnell am „Ende der Fahnen­stange“ angekommen.

Gruß, Luc :-?

Bild

Betrifft: AW: characters löschen - mit Replace
von: Daniel
Geschrieben am: 04.05.2015 21:03:46
Hi
wenns keine Formel sein soll, sondern die Werte in der Zelle direkt bearbeitet werden sollen und es in der Zelle nur eine Klammergruppe gibt, dann kannst du auch mit ERSETZEN zuerst "*[" durch nichts und danach "]*" durch nichts ersetzen.
Die Option "gesamten Zellinhalt vergleichen" muss hierbei aktiv sein.
- das funktioniert auch für mehere Zellen gleichzeitig
- das geht auch in VBA:

With Selection
.Replace "*[", "", xlwhole
.Replace "]*", "", xlwhole
End With

für einen Einzelwert als VBA auch so:
With Range("A1")
.Value = Split(Replace(.Value, "]", "["), "[")(1)
End with
Gruß Daniel

Bild

Betrifft: AW: characters löschen - mit Replace
von: simsim
Geschrieben am: 04.05.2015 23:30:21
Hallo VBA Fans,
danke an alle erstmal.
die Lösung mit replace fand ich gut, aber leider wurde "*[" stern nicht als beliebig viele Zeichen, sondern als string. gibt es andere Möglichkeit mit VBA???
Gruss an alle

Bild

Betrifft: AW: characters löschen - mit Replace
von: Daniel
Geschrieben am: 04.05.2015 23:49:44
Hi
ersetz mal xlwhole durch xlpart
sorry war nen Fehler von mir.
hier noch ne Alternative.
die ist für den Fall, wenn die Werte alle in einter Spalte stehen:
- ersetzte "]" durch "["
- wende auf die Spalte die Funktion DATEN - DATENTOOLS - TEXT IN SPALTEN an.
wähle hierbei das "[" als anderes Trennzeichen aus.
gib im Schritt 3 des Assistentenn an, dass du Spalte 1 und 3 nicht importieren willst.

With Columns(1)
    .Replace what:="]", replacement:="[", lookat:=xlPart
    .TextToColumns Destination:=.Cells(1, 1), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, _
        Other:=True, OtherChar:="[", _
        FieldInfo:=Array(Array(1, 9), Array(2, 1), Array(3, 9)), _
        TrailingMinusNumbers:=True
End With
Gruß Daniel

Bild

Betrifft: AW: characters löschen - mit Replace
von: simsim
Geschrieben am: 05.05.2015 23:18:39
Hallo Daniel,
Super, es hat perfekt funktioniert.
Danke nochmal an alle

 Bild

Beiträge aus den Excel-Beispielen zum Thema "characters löschen"