aus einer Zahl eine Minus-Zahl machen
#1
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!
]


Angehängte Dateien
.xlsx   Beispiel-Tabelle.xlsx (Größe: 244,22 KB / Downloads: 5)
Antworten Top
#2
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
Cadmus
Antworten Top
#3
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#4
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
Antworten Top
#5
Hallo Uwe,

dein Tipp klappt wunderbar.

Auch vielen Dank an alle anderen die Ihre Zeit geopfert haben

Grüsse

chefe321
Antworten Top
#6
Oder:

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

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste