有誰知道相當簡單的方法將不同長度的數字分成單獨的數字,然後操作每個數字?可能可以在 Excel 本身中完成,但認為巨集會更好,因為我只對符合一些標準的結果清單感興趣。例:1234 被分為 1、2、3 和 4。當結果可以除以選定的數字(例如3)時,巨集才會用給定的數字及其對應的結果填入儲存格:A1 = 1234,A2 = 30。 10000,建立僅包含滿足限制條件的數字的清單。
謝謝
答案1
您想要 Excel VBA 中的巨集來執行此操作還是只是一個方向指標?
這可能不是最有效的方法,但它是一種方法。
遍歷數字範圍並將每個數字轉換為字串,例如 sValue = Trim(Str(I))
然後對於 LEN(sValue) 中的每個數字,您將得到值並對其求平方
例如,對於 J = 1 To Len(sValue) 結果 = Result + (Val(Mid(sText, J, 1)) ^ 2) Next J
獲得結果後,執行您要求的標準並確認它是整數(例如),例如(結果/除數)= Round(結果/除數,0)
並將結果放入所需的儲存格中。根據需要重複多次迭代(例如 10000)
這是我剛剛製作的範例,我認為它適合您的範例(給出 3711 行答案),只需根據您的要求更改 Const 值。
Sub SplitNumber()
Const StartRange = 1
Const EndRange = 10000
Const Divisor = 3
Const InputCol = 1
Const ResultCol = 2
Dim StartRow, Result As Integer
Dim sValue As String
StartRow = 1
I = StartRange
CurrentRow = StartRow
While I <= EndRange
sValue = Trim(Str(I))
Result = 0
If Len(sValue) > 1 Then
For J = 1 To Len((sValue))
Result = Result + (Val(Mid(sValue, J, 1)) ^ 2)
Next J
Else
Result = Val(sValue) ^ 2
End If
If (Result / Divisor) = Round(Result / Divisor, 0) Then
Cells(CurrentRow, InputCol) = I
Cells(CurrentRow, ResultCol) = Result
CurrentRow = CurrentRow + 1
End If
I = I + 1
Wend
End Sub
答案2
為了完整起見,以下是不使用 VBA 的方法:
B1
使用Ctrl+ Shift+輸入此數組公式Enter{=SUMSQ(1*MID(ROW(),ROW(OFFSET($A$1,,,LEN(ROW()))),1))}
輸入此公式
A1
:=IF(MOD(B1,3)=0,ROW(),0)
根據需要填寫任意多行。你的情況是 10,000。
- 篩選以隱藏
0
列中的值A
或複製/貼上值,然後排序A
並刪除值為 的所有行0
。