Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sternchen setzen

Sternchen setzen
Claudia
Hallo,
ich brauche noch einmal Eure Hilfe.
Ich suche eine VBA-Lösung für folgendes Problem. Ich möchte für einen selektierten Bereich (nicht zusammenhängend) folgendes erledigen:
Der Bereich besteht aus Werten, z.B.
AB20
C15
Nun sollte das Makro hingehen und in die jeweils rechte Zelle den Wert schreiben, allerdings soll zwischen Buchstaben und Zahl noch ein Sternchen gesetzt werden. Es soll also folgendes rauskommen:
AB*20
C*15
Wer kann helfen?
Liebe Grüße
Claudia
AW: Sternchen setzen
03.03.2012 22:37:08
Matthias
Hallo Claudia,
mache mir gerade Gedanken zur Lösung, habe aber noch Fragen :
In die rechte Zelle den Wert schreiben? Meinst du eine Hilfsspalte?
Ist das Muster denn immer gleich z.B. immer 2 Zahlen auf der rechten Seite?
Nicht zusammenhängender Bereich soll im ganzen Blatt gesucht werden ?
Musterbeispiel oder die Bereiche wäre eventuell auch Hilfreich.
Gruß Matthias
AW: Sternchen setzen
03.03.2012 22:43:43
Claudia
Hallo Matthias
anbei eine Mustertabelle. Die gelbmarkierten wären dann nun die selectierten.
Nein, die Zeichen und Zahlen sind unterschiedlich.
https://www.herber.de/bbs/user/79197.xls
Liebe Grüße
Claidoa
Anzeige
Muss passen,....sorry Claudia - owT-
03.03.2012 23:21:50
Matthias
AW: Sternchen setzen
03.03.2012 23:24:10
Josef

Hallo Claudia,
Zellen markieren und laufen lassen.
Sub stars()
  Dim rng As Range, lngPos As Long
  
  For Each rng In Selection.Cells
    If Len(rng) Then
      For lngPos = 1 To Len(rng)
        If IsNumeric(Mid(rng, lngPos, 1)) Then
          rng.Offset(0, 1) = Left(rng, lngPos - 1) & "*" & Mid(rng, lngPos)
          Exit For
        End If
      Next
    End If
  Next
End Sub



« Gruß Sepp »

Anzeige
@Sepp : bitte kurze Info zu Offset
03.03.2012 23:32:28
Matthias
Hallo Sepp,
super Lösung, aber das mit dem Offset kenn ich überhaupt nicht, kannst du mir da was
näher bringen?
Gruß Matthias
AW: @Sepp : bitte kurze Info zu Offset
03.03.2012 23:58:02
Josef

Hallo Matthias,
ist doch in der Hilfe gut beschrieben
Ausdruck.Offset(RowOffset, ColumnOffset)
'RowOffset' gibt an, um wie viele Zeilen der Bezug verschoben werden soll, 'ColumnOffset' entsprechend die Anzahl der Spalten.

« Gruß Sepp »

Anzeige
@ Sepp: Vielen Dank, klappt prima. Dir
03.03.2012 23:44:44
Claudia
Matthias auch vielen Dank für Deine Mühe!
@ Sepp: Eine Erweiterung
05.03.2012 09:22:56
Claudia
Hallo Sepp,
ich benötige eine Erweiterung, in der Hoffnung, dass Du mir helfen kannst.
Ich habe Dein Makro etwas angepasst.
Sub Sternchen()
Dim rng As Range, lngPos As Long
Dim Bereich As Range
Set Bereich = ActiveSheet.Range("F5:F17")
For Each rng In Bereich
If Len(rng) Then
For lngPos = 1 To Len(rng)
If IsNumeric(Mid(rng, lngPos, 1)) Then
rng.Offset(0, 0) = Left(rng, lngPos - 1) & "*" & Mid(rng, lngPos)
Exit For
End If
Next
End If
Next
End Sub
Neben der Plausi in Deinem Makro soll das Sternchen nur dann gesetzt werden, wenn der jeweilige Wert aus F5, F6, etc. nicht in einer anderen Tabelle (Test Spalte A) hinterlegt ist. Jeder Wert muss einzeln geprüft werden. Also F5 kann also ggf. nicht mit einem Sternchen versehen werden, während F6 nicht, weil dieser Wert in der Tabelle vorkommt.
Kannst Du mir hier was basteln oder brauchst Du eine Beispieldatei?
Vielen Dank!
Liebe Grüße
Claudia
Anzeige
AW: @ Sepp: Eine Erweiterung
05.03.2012 15:52:35
Josef

Hallo Claudia,
so?
Sub Sternchen()
  Dim rng As Range, lngPos As Long
  Dim Bereich As Range
  
  Set Bereich = ActiveSheet.Range("F5:F17")
  
  
  For Each rng In Bereich
    If Len(rng) Then
      If IsError(Application.Match(rng, Sheets("Test").Columns(1), 0)) Then
        For lngPos = 1 To Len(rng)
          If IsNumeric(Mid(rng, lngPos, 1)) Then
            rng.Offset(0, 0) = Left(rng, lngPos - 1) & "*" & Mid(rng, lngPos)
            Exit For
          End If
        Next
      End If
    End If
  Next
  
  Set Bereich = Nothing
End Sub



« Gruß Sepp »

Anzeige
@ Sepp: Funktioniert perfekt, danke!
05.03.2012 19:36:02
Claudia
@ Sepp: Noch ein Problem
08.03.2012 07:24:53
Claudia
Hallo Sepp,
kannst Du mir vielleicht eine Änderung einbauen. Bislang ist es ja so, dass der Bereich F5:F17 geprüft wird - jeder Wert einzeln für sich. Wenn der Wert nicht in einer anderen Tabelle (=Test / Spalte A) enhalten ist, soll zwischen Buchstabe und Zahl ein Sternchen gesetzt werden.
Aufgrund der zahlreichen Besonderheiten habe ich festgestellt, dass die Lösung nicht immer klappt (liegt aber nicht an dem Makro, sondern an den Besonderheiten).
Kannst Du es so einrichten, dass jeder Wert aus F5:F17gegen die Tabelle Test geprüft wird. Wenn der Wert in Spalte A gefunden wird, dann soll zurückkommen, der Wert aus Spalte B der gleichen Zeile. Die Korrektur erfolgt auch in F5:F17. Wenn er nicht vorhanden ist, soll nix passieren (also kein Fehlerhinweis oder ähnliches).
Kannst Du hier was machen?
Liebe Grüße
Claudia
Anzeige
AW: @ Sepp: Noch ein Problem
08.03.2012 17:13:19
Josef

Hallo Claudia,
Sorry, aber hier "Wenn der Wert in Spalte A gefunden wird, dann soll zurückkommen, der Wert aus Spalte B der gleichen Zeile. Die Korrektur erfolgt auch in F5:F17" steig ich nicht durch!
Kannst du das noch einmal etwas verständlicher (für mich) formulieren?

« Gruß Sepp »

Anzeige
AW: @ Sepp: Noch ein Problem
08.03.2012 18:23:09
Claudia
Hallo Sepp,
ich versuche es. ;-)
Also die Werte aus F5:F17 werden nacheinander in Spalte A (Reiter Test) gesucht.
Beispiel: In F5 steht der Wert "Hose"
Dieser Wert wird nun in Spalte A des Reiters "Test" gesucht. Wenn in Spalte A "Hose" steht (kann nur einmal in Spalte A vorkommen) - z.B. in Zelle A19, dann soll der Wert aus Spalte B (hier B19) zurückgeliefert werden und in F5 eingetragen werden.
Und bei F6 bis F17 das gleiche. Wird kein Wert gefunden, dann soll der Wert in F5:F17 unverändert bestehen bleiben.
Besser?
Liebe Grüße
Claudia
AW: @ Sepp: Noch ein Problem
08.03.2012 19:10:09
Josef

Hallo Claudia,
Sub ohneSternchen()
  Dim rng As Range, Bereich As Range
  Dim vntRet As Variant
  
  Set Bereich = ActiveSheet.Range("F5:F17")
  
  For Each rng In Bereich
    If Len(rng) Then
      vntRet = Application.Match(rng, Sheets("Test").Columns(1), 0)
      If IsNumeric(vntRet) Then
        rng = Sheets("Test").Cells(vntRet, 2)
      End If
    End If
  Next
  
  Set Bereich = Nothing
End Sub



« Gruß Sepp »

Anzeige
Danke schön! :-)
08.03.2012 21:40:32
Claudia

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige