2016-08-01 8 views
-2

In EXCEL VBA wie trennt ich eine ganze Zahl in einzelne Ziffern, die dann mathematisch, z. die ganze Zahl 123456789 getrennt in 1,2,3, 4, 5, 6, 7, 8, 9 dann (1 * 8), (2 * 16), (3 * 32) usw .; die 1 * 8, 2 * 16, 3 * 32 sind nur Beispiele, die tatsächlichen Multiplikatoren könnten z.B. 1 * 1024, 2 * 2048 usw. Die anfängliche Ganzzahl (123456789) ist eine Variable (ID) von einem anderen Modul innerhalb eines VBA-Projekts. Entschuldigung, wenn ich nicht klar erklärte. Entschuldigung wegen der Formatierung (dies ist mein erster Post im Stackoverflow).So trennen Sie eine ganze Zahl in Ziffern

Option Explicit 
Sub NUMalpha() 

Private Property Get num() As Integer 
    NUMlong = Int(id) 
End Property 

Dim Digit_1 As Integer 

Dim Digit_2 As Integer 

Dim Digit_3 As Integer 

Dim Digit_4 As Integer 

Dim Digit_5 As Integer 

Dim Digit_6 As Integer 

Dim Digit_7 As Integer 

Dim Digit_8 As Integer 

Dim Digit_9 As Integer 

Digit_1 = left(NUMlong, 1) 

Digit_2 = Mid(NUMlong, 2, 1) 

Digit_3 = Mid(NUMlong, 3, 1) 

Digit_4 = Mid(NUMlong, 4, 1) 

Digit_5 = Mid(NUMlong, 5, 1) 

Digit_6 = Mid(NUMlong, 6, 1) 

Digit_7 = Mid(NUMlong, 7, 1) 

Digit_8 = Mid(NUMlong, 8, 1) 

Digit_9 = right(NUMlong, 1) 

End Property 

End Sub 
+1

finden Sie die Länge oder Ihre Zeichenfolge. Führen Sie dann eine for-Schleife von 1 zur Länge der Zeichenfolge aus und lesen Sie jeweils 1 Zeichen mit der mittleren Funktion. Verwenden Sie die Schleife, um das zu lesende Zeichen zu positionieren. Sie können dann entweder die einzelnen Zeichen einer Variablen zuweisen, um Ihre mathematischen Manipulationen durchzuführen, oder Sie können mathematische Manipulationen innerhalb der Schleife durchführen und eine laufende Summe der Ergebnisse behalten. Es hängt wirklich davon ab, was die Mathematik ist. –

+0

Hallo Dave. Es ist mir nicht klar, wo du 1 * 8 2 * 16 usw. bekommst. Bitte versuche es noch deutlicher zu erklären. –

+1

Welche Codierung haben Sie bisher ausprobiert? –

Antwort

0

VBA Lösung

Sub test() 
    Dim sNum As string, i As Long, mulitp As Variant, aryNum As Variant 

    sNum = Format(Range("A1").Value, "0") 
    mulitp = 8 
    ReDim aryNum(1 To Len(sNum)) As Variant 

    For i = 1 To Len(sNum) 
     aryNum(i) = Mid(sNum, i, 1) * mulitp * 2^(i - 1) 
    Next i 

    MsgBox Application.Sum(aryNum) 
End Sub 

Arbeitsblatt Formula Lösung

Verwenden der folgenden Formel =SUMPRODUCT(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1,8*2^(ROW(INDIRECT("1:"&LEN(A1)))-1))

Dies ist nicht eine Matrixformel, so drücken eingeben, nicht ctrl + shift + geben Sie ein.

enter image description here

0

123456789 größer ist als die maximale ganze Zahl, Größe (-32.768 bis 32.767) Wert in VBA.

Sub SplitLong() 

    Dim digits() As Long 
    Dim intValue As Long 
    Dim i As Long 
    Dim strValue As String 

    intValue = 123456789 
    strValue = intValue 

    ReDim digits(Len(strValue) - 1) As Long 
    For i = 1 To Len(strValue) 
     digits(i - 1) = Mid$(strValue, i, 1) 
    Next 

End Sub 
Verwandte Themen