我有两张床单。
sheet-1包含A列中类似的名称
1)最大
2)萨姆
3)拉姆
sheet-2也包含在A列中的名称,但是在B列中有一些特定的指示符,如
上校“A”- 1)最多,2) Sam,3) Ram
“B”-1,2,1
因此,正如您在sheet-2中所看到的,在Max前面有“1”,在“A”中有“Ram”。
使用此方法,我希望在sheet-1中在名称前面标记值。
伊格-
在表格-2中,如果我在Max前面有“1”,在COL"A“中有”Ram“,那么在sheet中标记Max和Ram -1 COL"B”标记为"topper“,如果在表中为2,则在表中标记为2,在工作表中标记为平均值-在Sam前面标记为 "B”。
有什么具体的办法吗?我已经找过了,但没能找到。这将是非常有帮助的,因为我对此excel公式和vba很陌生。
发布于 2018-03-15 06:03:29
您可以在第1页的B1中使用以下内容并向下拖动:
=IFERROR(CHOOSE(VLOOKUP(Sheet1!A1,Sheet2!$A$1:$B$3,2,FALSE),"Topper","Average"),"")如果查找范围中有更多的名称,则将其扩展为Sheet2!$A$1:$B$3,以包括所有其他行。
CHOOSE函数将在指定的索引处返回项,因此如果查找返回1,它将返回下面列表中的第一项,即"Topper"。它是2然后是"Average"。如果有第三项,它会去"Average"等。
如果没有找到匹配的值,则整个过程都封装在IFERROR中,在这种情况下,返回空字符串文本"";但是可以通过在"Text"之间放置所选文本来指定不同的返回消息。
表1公式:

版本2(在第1页中,B2向下拖放):
=IFERROR(IF(VLOOKUP(Sheet1!A1,Sheet2!$A$1:$B$3,2,FALSE)=1,"Topper",IF(VLOOKUP(Sheet1!A1,Sheet2!$A$1:$B$3,2,FALSE)>4,"Weak","Average")),"")发布于 2018-03-15 08:01:38
下面是我上述问题的vba代码,它运行得很好。
Sub aa()
Set Excel1 = ThisWorkbook.Sheets("Sheet1")
Set Excel2 = ThisWorkbook.Sheets("Sheet2")
Dim Excel1LR: Excel1LR = Excel1.Range("A1").CurrentRegion.Rows.Count
Dim Excel2LR: Excel2LR = Excel2.Range("A1").CurrentRegion.Rows.Count
For i = 2 To Excel1LR
Dim Value1: Value1 = Excel1.Range("A" & i).Value
For j = 2 To Excel2LR
Dim Value2: Value2 = Excel2.Range("A" & j).Value
If Value1 = Value2 Then
Dim Value3: Value3 = Excel2.Range("B" & j).Value
If Value3 = 1 Then
Excel1.Range("B" & i).Value = "topper"
ElseIf Value3 >= 2 And Value3 <= 4 Then
Excel1.Range("B" & i).Value = "average"
Else
Excel1.Range("B" & i).Value = "weak"
End If
Else
End If
Next
Next
msgbox "done"
End Subhttps://stackoverflow.com/questions/49291660
复制相似问题