我记得曾经看过人用数组公式能完美解决这个问题,可惜我当时就看的稀里糊涂,现在更是记不住了,我要是遇到这样的问题,我宁可编一段宏命令 sub 计算() with sheet1 for i=2 to .cells(.rows.count,2).end(xlup).row if Application.WorksheetFunction.CountIf(.range("B2:B"&i),.range("B"&i))>1.1 then exit for else .range("E"&i)=.range("A"&i) .range("F"&i)=.range("B"&i) .range("G"&i)=.range("C"&i) for j=i to .cells(.rows.count,2).end(xlup).row if .range("C"&j)>.range("G"&i) then .range("G"&i)=.range("C"&j) .range("E"&i)=.range("A"&j) end if next end if next end with end sub