Clever-Excel-Forum

Normale Version: aus einer Zahl eine Minus-Zahl machen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich würde gerne in einer Tabelle mit ca. 4.000 Zeilen aus einer Zahl z.B. 100 eine -100 machen, wenn in der Spalte daneben ein S steht
Sie ungefähr so aus:

A       B     C
100    H
100     S

Also wenn in einer Zeile in B ein S steht soll er (A * -1 ) nehmen, wenn H dann so lassen. wie bekomme ich das hin das er das für jede Zeile prüft und durchführt?

Freue mich über eine detaillierte Beschreibung , da ich nicht so firm in Excel bin

Vielen Dank

chefe321[
Bild bitte so als Datei hochladen: Klick mich!
]
Hallo,
in C1:
=WENN(B1="S";-A1;A1)

Falls eine Auswertung per Pivot erfolgen soll, würde ich die Tabelle über den Tab Daten -> aus Tabelle... einlesen und im PowerQuery Editor aufbereiten (Benutzerdefinierte Spalte einfügen).
Einführung:
https://www.youtube.com/watch?v=hEI5xckBKs8
https://www.youtube.com/watch?v=DuMuna_TIPc
Hi,

wenn ich mal davon ausgehe, dass in C:F im Original weitere Daten stehen, wird das wohl so nicht ohne weiteres gehen. Um die Daten in der gleichen Spalte umzuwandeln, muß man mit VBA arbeiten.

Als einfaches Beispiel:


Code:
Sub wechseln()
Dim loCo as long
Dim loLast as long

lolast=cells(rows.count,1).end(xlup).row
for loco=1 to lolast
if cells(loco,2)="S" then cells(loco,1)=-cells(loco,1)
next
End Sub
Hallo,

das wäre mein Vorschlag (geht in beide Richtungen, ist wiederholt anwendbar und etwas schneller):

Code:
Sub Wechseln()
  Dim i As Long
  Dim varD As Variant
 
  With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    varD = .Resize(, 2).Value
    For i = 1 To UBound(varD)
      Select Case varD(i, 2)
        Case "S"
          varD(i, 1) = -Abs(varD(i, 1))
        Case "H"
          varD(i, 1) = Abs(varD(i, 1))
      End Select
    Next
    .Value = varD
  End With
End Sub

Gruß Uwe
Hallo Uwe,

dein Tipp klappt wunderbar.

Auch vielen Dank an alle anderen die Ihre Zeit geopfert haben

Grüsse

chefe321
Oder:

Code:
Sub M_snb()
  UsedRange.Columns(1).Name = "snb"
 
  [snb] = [index(snb*(1-2*(offset(snb,,1)="s")),)]
End Sub