Excel에서 숫자를 별도의 숫자로 나누는 방법

Excel에서 숫자를 별도의 숫자로 나누는 방법

다양한 길이의 숫자를 별도의 숫자로 나누고 각 숫자를 조작하는 매우 간단한 방법을 아는 사람이 있습니까? 아마도 Excel 자체에서 할 수 있지만 몇 가지 기준에 맞는 결과 목록에만 관심이 있으므로 매크로가 더 좋을 것이라고 생각합니다. 예: 1234는 1, 2, 3, 4로 나뉩니다. 그런 다음 각각을 제곱하고 제곱의 합이 숫자로 반환됩니다(1^2 + 2^2 + 3^2 + 4^2 = 30). ) 이제 결과를 선택한 숫자(예: 3)로 나눌 수 있는 경우에만 매크로는 주어진 숫자와 해당 결과(A1 = 1234, A2 = 30)로 셀을 채울 것입니다. 모든 i = 1부터 30까지에 대해 이 작업을 수행합니다. 10000, 제약 조건을 충족하는 숫자로만 구성된 목록을 생성합니다.

감사해요

답변1

Excel VBA의 매크로를 사용하여 이 작업을 수행하시겠습니까, 아니면 방향을 가리키는 포인터만 사용하시겠습니까?

이것은 가장 효율적인 방법은 아니지만 한 가지 방법입니다.

숫자 범위를 살펴보고 각 숫자에 대해 문자열로 변환합니다. 예: sValue = Trim(Str(I))

그런 다음 LEN(sValue)의 각 숫자에 대해 값을 얻고 이를 제곱합니다.

예: J = 1 To Len(sValue) Result = 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 없이 수행하는 방법은 다음과 같습니다.

  1. + +를 B1사용 하여 이 배열 수식을 입력하세요 .CtrlShiftEnter

    {=SUMSQ(1*MID(ROW(),ROW(OFFSET($A$1,,,LEN(ROW()))),1))}

  2. 다음 수식을 입력하세요 A1.

    =IF(MOD(B1,3)=0,ROW(),0)

  3. 원하는 만큼 행을 입력하세요. 귀하의 경우에는 10,000입니다.

  4. 0열의 값을 숨기도록 필터링 A하거나 값을 복사/붙여넣은 다음 A값이 있는 모든 행을 정렬하고 삭제합니다 0.

관련 정보