1.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo!

Ich möchte in einer Calc-Tabelle bestimmte Spalten per Makro löschen lassen. Die Tabelle sieht folgendermaßen aus:

p00001 p00004 p00009 p00010 p00011 p00020 p00021 p00025 ......
12s 12s 12s 12s 12s 12s 12s 12s.........
8.0 15.0 1028
20.0 17.0 1028
10.0 15.0 1028
2.8 3.5 1028
21.0 26.0 1028
12.5 14.5 1028
0.0 1028
0.0 1028

Die Tabelle hat sehr viele Spalten. Ich möchte nun bestimmte Spalten, z.B. p00004, p00020 und p00021 per Makro löschen lassen. Ich wäre sehr dankbar für ein Calc-fähiges Makro, neheme aber auch Excel-Makros. (Oder gibt's da gar keinen Unterschied? Sorry, bin totaler Makro-Noob)

Vielen Vielen Dank für die Hilfe schon mal!!

Viele Grüße
Daniel

6 Antworten

0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo,
wie lautet denn das Kriterium nach dem das Makro Spalten suchen soll?
mfg
Wolfgang
0 Punkte
Beantwortet von
Hallo Wolfgang,

Also die Spalten beinhalten ja als Überschrift einen Text wie z.B. p00001. Dieser Code steht jeweils für einen gemessenen Stoff. Bestimmte gemessenen Stoffe benötige ich nun aber nicht. Es gibt also in den Spalten selbst kein Kriterium, sondern ich müsste per Hand alle nicht Benötigten Stoffe (p00004, p00020...) in das Makro eintragen.

Vielen Dank für die Hilfe!
Viele Grüße,
Daniel
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Daniel,

für Calc kann ich leider nicht sprechen, in Excel funktioniert es so:

Option Explicit

Sub spalten_loeschen()
Dim rngc As Range
For Each rngc In Range(Cells(1, 1), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column))
If rngc.Value = "p00004" Or rngc.Value = "p00020" Or rngc.Value = "p00021" Then
Columns(rngc.Column).Delete
End If
Next
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von
Hallo!

Entschuldigt bitte die späte Antwort. Vielen Dank für die Hilfe rainberg. Der Code hat mich auf jeden Fall schon mal weitergebracht. Ich habe es aber auch in Excel damit bisher nicht hinbekommen. Ich bekomme eine Fehlermeldung, die mir sagt, das ich die variable spalten_loeschen nicht definiert habe. Das ist wahrscheinlich eine doofe Fragen, aber ich habe wirklich noch keine Ahnung von Makros. Muss ich in die Klammer nach spalten_loeschen etwas schreiben wie: (p00004; p00020; p00021 As var)
Var für variant, weil ich buchstaben und zeichen verwende.

Vielen Dank schon mal!

Viele Grüße,
Daniel1234567
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Daniel,

das Makro läuft in Excel so, wie es geschrieben ist.
Füge es einfach in den Codebereich des relevanten Arbeitsblattes ein.

Voraussetzung ist natürlich, dass Deine Arbeitsblatt auch dieselben Daten einthält, wie in Deiner Ausgangsfrage angegeben.

spalten_loeschen ist übrigens keine Variable, sondern der Makroname.

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein wenig spielerei unter excel 2000 :-)

erlaubt mehrfacheingaben,getrennt durch ein lerrzeichen

gruss nighty

Sub Beispiel()
Dim Eingabe As String
Dim LetzteColumn As Long
Dim SchleifenZ As Long
Eingabe = InputBox("Bitte geben Sie Ihre/n Suchbegriff/e ein,getrennt durch ein Leerzeichen !")
LetzteColumn = ActiveSheet.Rows(1).End(xlToRight).Column
For SchleifenZ = 1 To Len(Eingabe)
Set Suche = Range(Cells(1, 1), Cells(1, LetzteColumn)).Find(Zeichenblock(Eingabe, SchleifenZ))
If Not Suche Is Nothing Then Columns(Suche.Column).Delete Shift:=xlUp
Next SchleifenZ
End Sub
Function Zeichenblock(Zellen As Variant, IndexBlock As Variant) As String
Dim Zelle As Range
Dim Zeichen As Integer
Dim Schalter As Boolean
Dim ArrInd As Integer
ReDim ArrFeld(Len([Zellen])) As String
ArrInd = 1
Application.Volatile
If IndexBlock > Len([Zellen]) Then IndexBlock = Len([Zellen])
For Zeichen = 1 To Len([Zellen])
If Mid([Zellen], Zeichen, 1) Like "[0-9,A-Z,a-z]" = True Then
ArrFeld(ArrInd) = ArrFeld(ArrInd) & Mid([Zellen], Zeichen, 1)
Schalter = True
End If
If Schalter = True And Mid([Zellen], Zeichen, 1) Like "[0-9,A-Z,a-z]" = False Then
ArrInd = ArrInd + 1
Schalter = False
End If
Next Zeichen
Zeichenblock = ArrFeld(IndexBlock)
End Function
...