将细胞范围转换为一个细胞

时间:2013-12-03 00:36:41

标签: excel vba excel-vba

我正在研究Excel 2010中的汽车零件编号数据库。我想从此简化列表:(例如)

Part Number|Year|Make|Model|Sub-model|Engine

  12345|1990|Ford|Focus|   blah  |blah
  12345|1991|Ford|Focus|   blah  |blah
  12345|1992|Ford|Focus|   blah  |blah
  54321|2001|Ford|Focus|   blah  |blah
  54321|2002|Ford|Focus|   blah  |blah
  54321|2003|Ford|Focus|   blah  |blah

到此:

Part Number|Year|Make|Model|Sub-model|Engine

  12345|1990-1992|Ford|Focus|   blah  |blah
  54321|2001-2003|Ford|Focus|   blah  |blah

除了手动之外。我需要这个的原因是我正在为一个品牌的零件处理200,000多个条目。我想知道有一个简单的方法吗?我已经使用kutools for excel将它分成基于make和model的单独工作簿,如果这有帮助的话。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

一个有点冗长的公式实际上可以解决这个问题。请参阅下面的图片:

enter image description here

关于这一点最好的部分是它也是一种搜索按钮。您只需更改零件编号,品牌,型号,子模型或引擎,它将找到适合您条件的最小和最大年份。

我图片中单元格I2的公式为:

=CONCATENATE(MIN(IF(($A$2:$A$7=H2)*($C$2:$C$7=J2)*($D$2:$D$7=K2)*($E$2:$E$7=L2)*($F$2:$F$7=M2),$B$2:$B$7))," - ",MAX(IF(($A$2:$A$7=H2)*($C$2:$C$7=J2)*($D$2:$D$7=K2)*($E$2:$E$7=L2)*($F$2:$F$7=M2),$B$2:$B$7)))

这是一个数组公式,因此在确认时使用 Ctrl-Shift-Enter 。相应地修改范围。

这里唯一的缺点是你的工作表可以大量计算。根据您的机器,这只能在几千行之后才能正常工作。

如果有效,请告诉我。我仍然会在VBA上工作。

编辑:

仅作为条件的零件编号:

=CONCATENATE(MIN(IF(($A$2:$A$7=H2),$B$2:$B$7))," - ",MAX(IF(($A$2:$A$7=H2),$B$2:$B$7)))

希望这有帮助。