这是我的问题。
我的excel中有这样的数据
Manufactuer Model Capacity
x 1000
x 3000
y 1800
y 4000
z 1300
我想遍历这些数据,并且当制造商相同时,我希望获得最小容量并将其复制到另一张纸上。问题是我不知道每个制造商的模型的确切数量。例如,一次X制造商可以找到5次,而另一次可以找到4次。
答案 0 :(得分:3)
如果您的Manufacturer
列是A:A
,而您的Model Capacity
列是B:B
,则公式
{=MIN(IF(A:A="y";B:B))}
将为您提供y
制造商(1800)的最小值。
更改字母y
以更改制造商,然后按Ctrl+Shift+Enter
放置花括号。
答案 1 :(得分:1)
在修改以适合您自己的范围和工作表名称之后,请尝试此操作。
sub minCapacities()
dim i as long, arr as variant, dict as object
set dict = createobject("scripting.dictionary")
dict.comparemode = vbtextcompare
with worksheets("sheet1")
arr = .range(.cells(2, "A"), .cells(.rows.count, "B").end(xlup)).value2
end with
for i=lbound(arr, 1) to ubound(arr, 1)
if dict.exists(arr(i, 1)) then
dict.item(arr(i, 1)) = application.min(dict.item(arr(i, 1)), arr(i, 2))
else
dict.item(arr(i, 1)) = arr(i, 2)
end if
next i
with worksheets("sheet2")
.cells(1, "A").resize(1, 2) = array("Manufactuer", "Min Capacity")
.cells(2, "A").resize(dict.count, 1) = application.transpose(dict.keys)
.cells(2, "B").resize(dict.count, 1) = application.transpose(dict.items)
end with
end sub