我被一个泡菜卡住了,有人可以帮忙吗? 我正在尝试检查每个属性是否具有特定的property_id。
例如:-验证每个属性是否具有属性“ ABC,XYZ,LMN,IJK”。还要确认每个日期是否都> 10-12-2018
| Property | Property_ID | Date |
|----------|-------------|------------|
| A | ABC | 10/12/2018 |
| A | XYZ | 08/11/2018 |
| A | LMN | 12/05/2018 |
| A | IJK | 15/05/2018 |
| B | ABC | 13/12/2018 |
| B | XYZ | 14/10/2018 |
| B | IJK | 15/12/2018 |
| C | LMN | 01/12/2018 |
| C | XYZ | 17/05/2018 |
Expected Result | Property | Property_ID | Date | Result | |----------|-------------|------------|------------| | A | ABC | 10/12/2018 | | A | XYZ | 08/11/2018 | | A | LMN | 12/05/2018 | | A | IJK | 15/05/2018 |All PID's are found | B | ABC | 13/12/2018 | | B | XYZ | 14/10/2018 | | B | IJK | 15/12/2018 |LMN is missing for Property B | C | LMN | 01/12/2018 | | C | XYZ | 17/05/2018 |ABC, IJK is missing for property C
我的逻辑:
'CREATING VARIABLE TO ACCESS SHEET RANGE
sheetName1 = "test" 'sheetName SHOULD BE EQUAL TO WORKSHEET NAME (REPLACE THE NAME ACCORDINGLY)
Set sht1 = Sheets(sheetName1)
'FINDING TOTAL NUMBER OF ROWS PRESENT IN THE ACTIVE WORKSHEET
totalRowCount = ActiveWorkbook.Worksheets(sheetName1).Range("A1", Worksheets(sheetName1).Range("A1").End(xlDown)).Rows.Count
previous_Value = sht1.Range("A2")
current_Value = Null
'Creating Flags to verify value
ABC = False
XYZ = False
IJK = False
LMN = False
OPQ = False
Date_Validation = Null
For i = 2 To totalRowCount
current_Value = Trim(sht1.Range("A" & i))
If current_Value = previous_Value Then
promotion_ID = Trim(sht1.Range("B" & i))
'Validate date
Date = "10-12-2018"
If promotion_ID = "ABC" Then
ABC = True
ElseIf promotion_ID = "IJK" Then
IJK = True
ElseIf promotion_ID = "XYZ" Then
XYZ = True
End If
'FULL SERVICE
If promotion_ID = "LMN" Then
LMN = True
ElseIf promotion_ID = "OPQ" Then
OPQ = True
ElseIf promotion_ID = "QWE" Then
QWE = True
End If
Else
sht1.Range("D" & i) = "Here i need to display msg of flag which is not found"
previous_Value = sht1.Range("A" & i)
End If
答案 0 :(得分:0)
我在代码中看到几个问题:
Date_validation
应基于该第一个值进行设置,例如:Date_validation = Date = Trim(sht1.Range("c2"))
If current_Value = previous_Value Then
为假(即新财产),则您没有检查是否满足所有条件,仅检查您现在坐在新财产上。相应的Else
应该是ElseIf
,例如:ElseIf not (ABC and IJK and XYZ and ... and Date_validation ) 'only if all false
'.... display error message
' also all if the ABC (etc) ...
' triggers need to be reset to false
' along with Data_validation
i
已经递增,并且位于新记录i
上。它可能应该显示为i-1