1
範圍( 「A2」)。選擇一個 =範圍(精選,Selection.End(xlDown))。COUNT + 1
Range("N2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-4]="""","""",IF(RC[-2]=""NA"",""N/A"",IF(RC[-2]=""N/A""," & _
"""N/A"",IF(RC[-2]>=RC[-4],""Met"",""Not Met""))))"
Selection.AutoFill Destination:=Range(Cells(2, 14), Cells(a, 14))
[code] 這是目前我編寫公式的代碼。這是完美的工作,但我需要添加一些東西。我需要對F列中具有特定文本的每一行都有一個反轉公式。這些是:AR17-Report
,CS02-Report
,HSCBD-Report
,KHG-Report
。如果列F
有任何這些文本。列N
中的公式應顛倒過來。 而不是>
,它應該是<
。我是vba /宏的新手。
[代碼]
MAXROW = 10000
For i = 1 To MAXROW
Range("N" & i).Select
If Not IsError(Application.Match(Range("F" & i), Array("AR17 - Past Due Receivables Outstanding", "AR18 - Past Due Receivables Outstanding greater than 60 days", "HRSC01NA - Call Abandonment Rate ", "ESC07 - Call Abandonment"), False)) Then
ActiveCell.FormulaR1C1 = "=IF(RC[-2]<=RC[-4],""Met"",""Not Met"")"
Else
ActiveCell.FormulaR1C1 = _ "=IF(RC[-4]="""","""",IF(RC[-2]=""NA"",""N/A"",IF(RC[-2]=""N/A"",""N/A"",IF(RC[-2]>=RC[-4],""Met"",""Not Met""))))"
End If
Next
[代碼]
現在,這個代碼是工作和它被反轉式。然而,當我將我的代碼替換爲這個公式以反轉公式時,我的其他工作表中的數據透視表沒有更新或沒有獲取數據。
現在,這裏是我的全部代碼:
[代碼]
Sub Button5_Click()
Dim b As Integer
Sheets("database_2").Select
ActiveSheet.Range("$A$1:$P$7436").AutoFilter Field:=8, Criteria1:="=LIVE", _
Operator:=xlOr, Criteria2:="="
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
Range("A1").Select
Selection.AutoFilter
Range("A2").Select
b = Range(Selection, Selection.End(xlDown)).Count + 2
Range("A2").Select
Cells(b, 1).Select
Windows("NEW Consolidated Data Point System_Final.xlsm").Activate
Range("D1").AutoFilter Field:=4, Criteria1:=Array("HR", "OM", "PY"), Operator:=xlFilterValues
For Each rngCell In Range("D2:D" & Range("D2").End(xlDown).Row)
If Not rngCell.EntireRow.Hidden Then
rngCell.Value = "ES"
End If
Next rngCell
Selection.AutoFilter
Windows("Compliance.csv").Activate
Range("I1").AutoFilter Field:=9, Criteria1:=Array("KPI", "CPI", "GPI"), Operator:=xlFilterValues
For Each rngCell In Range("I2:I" & Range("I2").End(xlDown).Row)
If Not rngCell.EntireRow.Hidden Then
rngCell.Value = "NBS"
End If
Next rngCell
Selection.AutoFilter
Range("N2").Select
i = Range(Selection, Selection.End(xlDown)).Count + 1
Range("P2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-2],""mmmm"")"
Range("P2").Select
Selection.AutoFill Destination:=Range(Cells(2, 16), Cells(i, 16))
Range(Cells(2, 16), Cells(i, 16)).Select
Selection.Copy
Range("N2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Cells(2, 16), Cells(i, 16)).Delete
Range("C2:M2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("NEW Consolidated Data Point System_Final.xlsm").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Compliance.csv").Activate
Range(Cells(2, 15), Cells(i, 15)).Copy
Windows("NEW Consolidated Data Point System_Final.xlsm").Activate
Cells(b, 12).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Compliance.csv").Activate
Range(Cells(2, 14), Cells(i, 14)).Copy
Windows("NEW Consolidated Data Point System_Final.xlsm").Activate
Cells(b, 13).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
A = Range(Selection, Selection.End(xlDown)).Count + 1
Range("N2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-4]="""","""",IF(RC[-2]=""NA"",""N/A"",IF(RC[-2]=""N/A"",""N/A"",IF(RC[-2]>=RC[-4],""Met"",""Not Met""))))"
Selection.AutoFill Destination:=Range(Cells(2, 14), Cells(A, 14))
Range("O2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]="""","""",IF(RC[-1]=""NA"",""N/A"",IF(RC[-1]=""Met"",1,0)))"
Selection.AutoFill Destination:=Range(Cells(2, 15), Cells(A, 15))
Range("P2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]="""","""",IF(RC[-2]=""NA"",0,IF(RC[-2]=""N/A"",0,1)))"
Selection.AutoFill Destination:=Range(Cells(2, 16), Cells(A, 16))
DataArea = "database_2!R1C1:R" & A & "C16"
Sheets("Per Month").Select
Range("Q12").Select
ActiveSheet.PivotTables("PivotTable5").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataArea _
, Version:=xlPivotTableVersion15)
ActiveWorkbook.RefreshAll
Sheets("Per Market").Select
Range("Q12").Select
ActiveSheet.PivotTables("PivotTable4").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataArea _
, Version:=xlPivotTableVersion15)
ActiveWorkbook.RefreshAll
Sheets("Computation").Select
Range("Q12").Select
ActiveSheet.PivotTables("PivotTable7").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataArea _
, Version:=xlPivotTableVersion15)
ActiveWorkbook.RefreshAll
Sheets("database_2").Select
End Sub
[代碼]
我粘貼的代碼只是我整個代碼的一部分。它在中間,所以我只需要添加一些東西。一切都通過一次點擊來執行。我添加了一個按鈕併爲其分配了一個宏。或任何建議來扭轉公式。我的代碼中的默認公式是= IF(J2 =「」,「」,IF(L2 =「NA」,「N/A」,IF(L2 =「N/A」,「N/A」 L2> = J2,「Met」,「Not Met」))))。當列F中存在任何這些文本時,列N中的公式應該是= IF(J2 =「」,「」,IF(L2 =「NA」,「N/A」,IF(L2 =「N/A「,」N/A「,IF(L2 <= J2,」Met「,」Not Met「))) – markerbean
無論您發佈哪部分代碼。您可以在代碼中使用上述過程的主體。正如你所看到的,我使用字符串變量來保存公式,所以你甚至可以在for循環內改變它爲'sReversedFormula =「= IF(L」&c.Row&「=''」...' –
嘗試過,並且在將公式替換爲sReversedFormula =「= IF(J2 =」「,」「,IF(L2 =」NA「,」N/A「,IF(L2 =」N/A「 ,「N/A」,IF(L2> = J2,「Met」,「Not Met」))))「 – markerbean