Herbers Excel-Forum - das Archiv
characters löschen

|
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
Betrifft: AW: characters löschen
von: Hajo_Zi
Geschrieben am: 04.05.2015 20:10:41
Tabelle3 | P | Q |
8 | qwweeererr[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 |
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 :-?
Betrifft: AW: Da du die VBA-Fans angesprochen hast, ...
von: Matthias L
Geschrieben am: 04.05.2015 20:39:25
Hi
| A | B |
1 | qwweeererr[hey Luc das passt :-)]hjhjhjki | hey Luc das passt :-) |
Formeln der Tabelle |
Zelle | Formel | B1 | =MaskOn(MaskOn(A1;"mrk[]");"[]";1) |
|
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias
Betrifft: Sag ich ja, ...
von: Luc:-?
Geschrieben am: 05.05.2015 02:29:52
…Matti,
aber der Fragesteller scheint ja eine selbst zusammengestellte EinzelLö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 Aufgabenstellung 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 :-?
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
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 …
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
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 Zweitschrift einer sehr alten UDF handelt (die Erstschrift wurde durch Änderungen der Forumssoftware unbrauchbar!). Deren Argumente und ihre möglichen Werte sind auch bedingt selbsterklä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 grundsätzlicher 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 reduzierte Zeichenfolge als Listentext über Maske laut Arg2 mit Einzelblanks als Ersatz-/Trennzeichen
Arg2.1: anu=alf+numerisch alf=Buchstabe kb=Kleinbuchstabe gb=Großbuchstabe num=Ziffer zw=Zahlenwerte
Arg2.2: hex=Hexadezimalzahlen ad=Zelladresse mar‘’=Markierung ‘…’ [‘’=beliebige differente Zeichen ]
Arg2.3: beliebige direkt eingetragene Zeichen/kombination (freie Zeichenkombination hier ggw nicht möglich)
Arg3: 0 [1 ] *nur [ohne ] Zeichen laut Arg2 oder zusätzlich zu belassende 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 Einzelzeichen, keine Folge einzelner zusätzlich zu bewahrender Zeichen wie in allen anderen Fällen zulässig. Außerdem muss es unmittelbar vor einer erkennbaren Zelladresse in Arg1 auftreten. Falls hier der sogenannte Schnittmengenoperator (Leerzeichen) auftreten kann, sollte(n) ggf (ein) andere(s) Zeichen für Arg4 gewählt werden.
Achtung! Von dieser Version werden keine Z1S1- und Adressen oberhalb von IV65536 (xlVersionen 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 Leerzeichen) und beim 2.Argument ist hier auch noch keine AdressIsolation vorgesehen.
Viel Spaß beim Selbstversuch! :-]
Qapla', Luc :-?
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
Betrifft: Mehr war ja von dir auch nicht zu erwarten! owT
von: Luc:-?
Geschrieben am: 06.05.2015 13:42:48
:-?
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?
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 :-?
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
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 PgmierHilfsmittel. 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 Aufgabenstellung der Fkt. Das beachten nur sehr Wenige! Ich freue mich, wenn ich mal, sehr selten, auf solch ein Bsp stoße. Leider erkennt der Nachnutzer dann oft nicht, was er da hat. Zu sehr sind die Nutzer bei VBA auf „Anpasseritis“ fixiert…
Luc :-?
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
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 MatrixKonstanten), was in VBA idR nur mit
Variant-Argumenten möglich ist. Ebenso ein
Variant-Ergebnis, damit ggf auch qualifizierte Fehlermeldungen ausgegeben wdn können.
Wünschenswert, aber nicht immer erforderlich, wäre volle Matrixformeltauglichkeit, zumindest in Bezug auf das HauptArgument. Für NebenArgumente muss das nur gelten, wenn über die xl-typische WerteVariation bereichsbezogener Angaben hinaus ganze Datenfelder verarbeitet wdn sollen oder dieses ermöglicht wdn soll. Ich meine also eine Fkt, die mit
allen oder wenigstens möglichst vielen existierenden Xl-Gegebenheiten umgehen kann, nicht mit evtl zukünftigen (dieses Risiko bleibt). Ebenso erwarte ich auch keine „Handy-Funktion“, die ganz verschiedene Dinge miteinander vereint. Das entspräche eher einer Überspezialisierung als Universalität.
So kann eine TextFkt 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 Bedienkomfort erhöht wdn kann, oder diverse Sicherungsmaßnahmen (damit ist nicht die Anwendungssicherheit gemeint!).
Luc :-?
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
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
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 FehlerAusgabe 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 „Eintagsfliegen“, 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 PgmmierHilfsmittel und kein UniversalWerkzeug, denn es ginge ja vornehmlich um ein abgeschlossenes Projekt. Solche Fktt wären dann konsequenterweise auch stets
Private oder in solchen Modulen untergebracht. Den meisten Nutzern geht's aber durchaus um universellere Werkzeuge, die sie in der Personal.xlsm oder einem AddIn sammeln, um sie bei Bedarf wiederzuverwenden. Wer soll dann in so etwas die Übersicht behalten, wenn von einem Werkzeug x Varianten für spezifische Zwecke erforderlich sind? Wären die XlFktt auch nach diesem Prinzip konstruiert worden, hätte sich Xl wohl kaum gg andere Produkte durchsetzen können.
Außerdem kann auch ein Selbermacher aus meinen Bspp lernen, wie man an so etwas herangehen sollte. Das lernt er bei spezifischen Fktt bestimmt nicht; er müsste allgemeinere Grundlagen erst aus einer Vielzahl von CodeBspp 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 vorangestellte 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 universelle UDF für FmlEinsatz schreiben muss. Darin habe ich inzwischen schon soviel Übung, dass ich auch mal etwas mit vertretbarem ZeitAufwand 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 Experimenten probierte meine Kollegin Laura Schulz vor den Augen einer Gruppe von Vierjährigen an einem ziemlich komplizierten elektronischen Spielzeug 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 Funktionen des Spielzeugs. Doch als sie ging, wiederholten diese Kinder nur das Wenige, was sie ihnen vorgefü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 Fahnenstange“ angekommen.
Gruß, Luc :-?
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
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
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
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