1

私はまだExcelのvbaに非常に慣れておらず、この問題を解決するのに困難に直面しています。誰かが私のコードがどこで間違っていたのかを教えてくれ、可能な限り単純化された解決策を提供してくれることを本当に望んでいます。どうもありがとう&本当に感謝します!

質問: ローンの申し込みは、顧客の収入に基づいて評価されます。For-Next関数とIFステートメントを使用して、次の承認ステータスを表示することになっています。

それぞれのステータスを持つ顧客の収入

60,000特別料金で承認します。>40,000標準レートで承認します。>24,000マネージャーの承認を待ちます。その他の場合申請を拒否する

Excelの2行目から、列Bには「顧客の収入」の数値が含まれ、Excelの列Cには「ローン申請状況」の数値が含まれています。

私のコードは次のようにうまく機能します:

Sub ForNext_If()

'CINCOME = Customer Income,Loan status= the application status, x = the row number, FinalRow= last row number 

x = 2
For x = 2 To 11 Step 1

CINCOME = Cells(x, 2).Value

If CINCOME > 60000 Then
LOANSTATUS = "Approve with special rates"

ElseIf CINCOME > 40000 Then
LOANSTATUS = "Approve with standard rates"

ElseIf CINCOME > 24000 Then
LOANSTATUS = "Await manager's approval"

Else
LOANSTATUS = "Reject application"

End If

Cells(x, 4) = LOANSTATUS

Next

End Sub

しかし、呼び出し関数を使おうとすると、

Sub ForNext_If()

x = 2
For x = 2 To 11 Step 1

CINCOME = Cells(x, 2).Value

Call Calling

Cells(x, 4) = LOANSTATUS

Next

End Sub

Function Calling()

If CINCOME > 60000 Then
LOANSTATUS = "Approve with special rates"

ElseIf CINCOME > 40000 Then
LOANSTATUS = "Approve with standard rates"

ElseIf CINCOME > 24000 Then
LOANSTATUS = "Await manager's approval"

Else
LOANSTATUS = "Reject application"

End If

End Function

CINCOMEの値は、ローン申請ステータスを判別するための「呼び出し」関数に転送できなかったようです。T_T正確に何が問題だったのでしょうか。

4

1 に答える 1

0

コメントに加えて。私はあなたのために2つの解決策を用意しました(もっとありますが、これらの2つが私の頭に浮かんだ最初のものです)。


  1. ユーザー定義関数
    関数がいずれかのモジュールに貼り付けられたら、セルをクリックして= LoanAppStatus(range)、つまり= LoanAppStatus(B2)+と記述し、ワークシートで使用できます。これを列の下にドラッグできます。

    ' User Defined Function
    ' Returns the status of customers loan application based on the income
    Function LoanAppStatus(CINCOME As Range) As String
        If CINCOME.Value >= 24000 And CINCOME.Value < 40000 Then
            LoanAppStatus = "Await manager's approval"
    
    ElseIf CINCOME.Value >= 40000 And CINCOME.Value < 60000 Then
        LoanAppStatus = "Approve with standard rates"
    
    ElseIf CINCOME.Value > 60000 Then
        LoanAppStatus = "Approve with special rates"
    
    Else
        LoanAppStatus = "Reject application"
    End If
    

    終了機能


2.元のサブ手順を書き直しました

'Procedure
' Fills the status of customers loan application (Column C) based on the income ( Column B )
    Sub ForNext_If()
        Dim i As Long
        Dim wS As Worksheet
        Set wS = ThisWorkbook.ActiveSheet

        ' Range("B" & i).Value its what you called CINCOME
        ' Range("C" & i).Value its what you called LOANSTATUS

        With wS
          For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
            If Range("B" & i).Value > 60000 Then
               Range("C" & i).Value = "Approve with special rates"
            ElseIf Range("B" & i).Value >= 40000 And Range("B" & i).Value < 60000 Then
               Range("C" & i).Value = "Approve with standard rates"
            ElseIf Range("B" & i).Value >= 24000 And Range("B" & i).Value < 40000 Then
               Range("C" & i).Value = "Await manager's approval"
            Else
               Range("C" & i).Value = "Reject application"
            End If
          Next i
        End With
    End Sub
于 2013-03-14T08:49:19.510 に答える