我想在 Excel 中自動化一些事情,問題是我絕對不是程式員/腳本撰寫者,所以這對我來說都是陌生的。
所以我有一個串列,每次匯入一組新值時長度都會發生變化,我想要的是程式檢查列 a(帶有標題)的某些值 IE:
Sub Grade()
If Range("A2").Value = 2031 Then
Range("H2").Value = "Grade 4"
ElseIf Range("A2").Value = 2030 Then
Range("H2").Value = "Grade 5"
ElseIf Range("A2").Value = 2029 Then
Range("H2").Value = "Grade 6"
ElseIf Range("A2").Value = 2028 Then
Range("H2").Value = "Grade 7"
ElseIf Range("A2").Value = 2027 Then
Range("H2").Value = "Grade 8"
ElseIf Range("A2").Value = 2026 Then
Range("H2").Value = "Grade 9"
ElseIf Range("A2").Value = 2025 Then
Range("H2").Value = "Grade 10"
ElseIf Range("A2").Value = 2024 Then
Range("H2").Value = "Grade 11"
ElseIf Range("A2").Value = 2023 Then
Range("H2").Value = "Grade 12"
End If
End Sub
這可以很好地在單元格 H2 中輸入值,但我現在希望它向下列并檢查其余部分,這是我遇到困難的地方。問題是這次有 15 個條目,但是當我再次執行此操作時,可能只有 3 個。所以我希望它檢查列并運行該腳本,只要單元格不為空。
任何幫助表示贊賞。
uj5u.com熱心網友回復:
我只是在 H2 中輸入了以下公式:
="Grade " & (2035-B2)
您可以輕松拖放到其他單元格并進行細微更改,甚至不需要 VBA。
uj5u.com熱心網友回復:
像下面這樣的東西可以作業:
Option Explicit
Public Sub GenerateGrade()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'ThisWorkbook.ActiveSheet
Dim LastRow As Long ' find last used row
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim iRow As Long
For iRow = 2 To LastRow ' loop through all rows
' if between 2023 and 2031 calculate grade
If ws.Cells(iRow, "A") >= 2023 And ws.Cells(iRow, "A") <= 2031 Then
ws.Cells(iRow, "H") = "Grade " & (2031 - ws.Cells(iRow, "A")) 4
End If
Next iRow
End Sub
實際上,您可以根據 A 列中的值計算等級:
Grade = 2031 - ValueA 4
uj5u.com熱心網友回復:
回圈遍歷列的行
- 如果數字不是那么“方便”,您可以使用以下內容。
Option Explicit
Sub Grade()
Dim Grades As Variant
Grades = VBA.Array(2031, 2030, 2029, 2028, 2027, 2026, 2025, 2024, 2023)
Dim GradeTitles As Variant
GradeTitles = VBA.Array("Grade 4", "Grade 5", "Grade 6", "Grade 7", _
"Grade 8", "Grade 9", "Grade 10", "Grade 11", "Grade 12")
Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
Dim lRow As Long: lRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim rIndex As Variant
Dim r As Long
For r = 2 To lRow
rIndex = Application.Match(ws.Cells(r, "A").Value, Grades, 0)
If IsNumeric(rIndex) Then
ws.Cells(r, "H").Value = GradeTitles(rIndex - 1)
Else
ws.Cells(r, "H").Value = Empty
End If
Next r
End Sub
uj5u.com熱心網友回復:
您可以選擇一個足夠寬的范圍并添加一個僅在您有成績時顯示值的公式。
我選擇了 A2:A200 作為例子。那么公式應該是:
=IF(ISNUMBER(A2:A200),"Grade " & (2035-A2:A200), "")
如果它在 A 列中找到一個數字,它會計算成績。如果不是,它將保持單元格為空(“”)。這樣,您就不需要往下走。
最終結果如下。

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/456332.html
上一篇:如何遍歷檔案夾A的子檔案夾以獲取每個子檔案夾中的檔案名并使用VBA從檔案夾B復制其他同名檔案
下一篇:HTML提交按鈕在按下時隱藏
