저는 vba를 사용하고 있으며 아래 코드를 적용하여 각 열(X, AK, AW) 값의 셀에 'A'를 추가했습니다.
ActiveSheet.Range("X2:X24").Select
For Each X In Selection
If X.Value <> "" Then X.Value = X.Value & "A"
Next
ActiveSheet.Range("AK2:AK24").Select
For Each AK In Selection
If AK.Value <> "" Then AK.Value = AK.Value & "A"
Next
ActiveSheet.Range("AW2:AW24").Select
For Each AW In Selection
If AW.Value <> "" Then AW.Value = AW.Value & "A"
그러나 이제 Y, Z, AA 및 AB 열에 아래 수식을 적용하려고 합니다. 나는 이것을 두 번째 셀부터 아래쪽으로 적용하고 값이 있는 셀에만 적용하고 싶습니다. 따라서 셀이 비어 있지 않으면 Y2부터 아래로 이동합니다. 나는 그것을 작동시킬 수없는 것 같습니다!
=TODAY()-1
=TEXT(TODAY(),"YYYYMM")
=TEXT(TODAY(),"MMM YYYY")
답변1
이것은 Y 열의 데이터와 함께 마지막으로 사용된 행을 동적으로 결정합니다.
A2:BA+lastRow 범위를 배열에 복사하고 모든 행을 반복하며 열당 각 수식을 할당합니다(셀이 비어 있지 않은 경우). 그런 다음 배열을 다시 범위에 배치합니다.
Option Explicit
Public Sub SetFormulasToNonEmptyCells()
Dim ur As Range, arr As Variant, r As Long
'The selected columns start at A (col 1) to BA (col 53)
Set ur = Sheet1.Range("A2:BA" & Sheet1.Cells(Sheet1.Rows.Count, "Y").End(xlUp).Row)
arr = ur
For r = 1 To UBound(arr)
If Len(Trim$(arr(r, 10))) > 0 Then arr(r, 10) = "=TODAY()-1" 'J (10)
If Len(Trim$(arr(r, 22))) > 0 Then arr(r, 22) = "-1" 'V (22)
If Len(Trim$(arr(r, 25))) > 0 Then arr(r, 25) = "1" 'Y (25)
If Len(Trim$(arr(r, 26))) > 0 Then arr(r, 26) = "1" 'X (26)
If Len(Trim$(arr(r, 27))) > 0 Then arr(r, 27) = "=TEXT(TODAY(),""YYYYMM"")" 'AA (27)
If Len(Trim$(arr(r, 28))) > 0 Then arr(r, 28) = "=TEXT(TODAY(),""MMM YYYY"")" 'AB (28)
If Len(Trim$(arr(r, 46))) > 0 Then arr(r, 46) = "-1" 'AT (46)
Next
ur.Formula = arr
ur.Columns(4).NumberFormat = "mmm yyyy" 'Use col #'s instead of letters
End Sub