2016-05-14 5 views
0

Ich möchte, dass Sie etwas Spaß haben. Ich brauche etwas Bestimmtes.Brauchen Formel für Excel, um die Zahl "9" zu jeder Zahl einzeln zu subtrahieren und

Zuerst muss ich erklären, was ich mache. Ich verwende eine einfache Kodierung für Produktpreise im Einzelhandel, weil ich nicht möchte, dass die Leute den tatsächlichen Preis für sich kennen. Also ändere ich die ursprünglichen Zahlen in eine andere, subtrahiere die Zahl 9 für jede Zahl. Normalerweise notiere ich manuell alle Preise mit dieser Kodierung für jedes Produkt. So

.. zum Beispiel Nummer 10 wären 89. (9-1 = 8) und (9-0 = 9) Andere Beispiele:

  1. 128 $ = 871
  2. 75 $ = 24
  3. $ 236 = 763
  4. 9 $ = 0

Schließlich setzte i 2 Nummer Neunen (9) zu Beginn des auch kodifiziert Preises, die Menschen zu verwirren, die vielleicht denken, dass Anzahl könnte der Preis sein.

So sind die Beispiele, die ich verwendet, bevor es wie folgt aus:

  1. 99871 (bedeutet $ 128)
  2. 9924 (Mittel 75 $)
  3. 99763 (bedeutet 236 $)
  4. 990 (bedeutet $ 9)

Denken Sie daran, dass ich 2 (zwei) Neunen vor dem echten Preis brauche. Die realen Preise beginnen nie mit 0, also existieren die Neunen am Anfang nur, um Leute zu verwirren.

Ok. So, jetzt, wo Sie verstehen, kommt hier der zweite Teil. Ich habe ein Excel mit hunderten meiner Produkte hinzugefügt, mit Preisen, Beschreibung, etc. Und ich entschied, dass es Zeit ist, einen Drucker zu verwenden und anzufangen, diese Informationen von Excel zu drucken. Ich habe eine Software, um das zu tun, aber zuerst muss ich die kodifizierten Preise im excel auch haben.

Der spaßige Teil beginnt, wenn ich die realen Preise, die bereits in meinem Excel-Dokument geschrieben sind, AUTOMATISCH in eine neue Spalte konvertieren soll. So muss ich nicht wieder alle Preise in kodifizierter Form für die alten und neuen Artikel eingeben, die ich in Zukunft hinzufügen werde.

Kann mir jemand dabei helfen? Ist es überhaupt möglich?

Ich versuchte mit = A1-9999, aber es funktioniert nur mit 2-Zeichen-Nummer. Denn wenn der reale Preis 5 ist, bekomme ich 3 Neunen: 9994 (Code). Und wenn der Preis 234 ist, werde ich nur 1 neun 9765 (Code) bekommen. Und es ist eine Bedingung, dass ich die ZWEI Neunen zuerst haben muss.

Vielen Dank im fortgeschrittenen!

+0

Die bessere Frage ist, warum möchten Sie dies in erster Linie tun. – dinotom

+0

nach dieser Frage, gibt es eine maximale Anzahl von Zeichen für das Stück? Gibt es Gegenstände im Wert von 1 000 000, 10 000 oder 100? Gibt es Dezimalstellen für Ihre Preise oder sind sie immer ganze Zahlen? –

+0

@dinotom Ich brauche es nur. Muss ich auch erklären, dass es ein Familienunternehmen ist und es Mitarbeiter gibt, die diesen Kodex gelernt haben? Bitte, ich brauche Hilfe, damit ich es nicht ändern kann. Vielen Dank. – user3741840

Antwort

0

Ich werde Helfer Zellen verwenden, aber Sie könnten alles in eine Zelle ablegen, wenn Sie wollen, da Sie nur mit 4 Zeichen zu tun haben.

Für dieses Beispiel nehme ich an, dass Ihre ursprüngliche Preisliste in B11 beginnt.

Legen Sie das in D11 und kopieren Sie drei weitere Male nach rechts, so dass Sie es von D11 bis G11 haben. Diese Formel entfernt 1 Zeichen von Ihrem Preis und subtrahiert dieses Zeichen von 9. Wenn Sie die nächste Spalte gehen, wiederholt es sich. Wenn Sie nicht so viele Zeichen haben, wird "" zurückgegeben.

In C11 werden Sie Ihre Build-Nummer basierend auf den benachbarten 4 Spalten mit dieser Formel:

="99"&D11&E11&F11&G11 

Sie stellt 99 vor addieren dann die Zahlen von den benachbarten 4 Spalten.

Wählen Sie die Zellen C11 bis G11 aus und kopieren und fügen Sie sie nach unten neben Ihrer Datenspalte so weit wie nötig ein.

Eine alternative prägnanter Methode wäre:

=REPT(9,LEN(B11)+2)-B11 
+0

Wenn Sie alles in einer einzigen Zelle benötigen, nehmen Sie das erste Formal und ersetzen Sie es in der zweiten Gleichung. Ändern Sie auch die Spalte (A1) auf 1, dann auf 2 und dann auf 3 und schließlich auf 4 für jedes Mal, wenn Sie die erste Gleichung in die zweite übergehen. –

0

Obwohl Sie für die Formel angefordert haben, ich VBA-Programm bin darauf hindeutet, was sehr praktisch für mich scheint. Sie müssen VBE öffnen und ein Modul einfügen und das Programm kopieren. Ändern Sie die Codezeilen, wo angegeben Ihren Anforderungen für Blätter passen usw.

Sub NumberCode() 
    Dim c As Range 
    Dim LR As Integer 
    Dim numProbs As Long 
    Dim sht As Worksheet 
    Dim s As Integer 
    Dim v As Long 
    Dim v1 As Long 
    Set sht = Worksheets("Sheet1") ' change as per yr requirement 
    numProbs = 0 
    LR = sht.Cells(Rows.Count, "A").End(xlUp).Row 
    For Each c In sht.Range("A1:A" & LR).Cells 
    s = Len(c) 
    v = c.Value 
    v1 = 99 
    For s = 1 To Len(c) 
     v1 = v1 & (9 - Mid(c, s, 1)) 
    Next 
    c.Offset(0, 1).Value = v1 
    v1 = 99 
    numProbs = numProbs + 1 
    Next 
    MsgBox "Number coding finished" 
End Sub 

Musterblatt der Ergebnisse ist unten angehängt.

Sample sheet

0

Vielleicht bin ich etwas fehlt, obwohl einfach:

=REPT(9,2+LEN(A1))-A1

mir gut scheint.

Mit freundlichen Grüßen

Verwandte Themen