如何在多行

时间:2016-12-09 20:22:01

标签: arrays excel excel-vba excel-2010 excel-2007 vba

你好我需要为学校完成一些excel表,我遇到了真正的困难。
我需要从这样的表中找到最长的 FULL 名称。要求是我可以创建另一个列来制作

  

= LEN(A1)+ LEN(B1)

然后仅比较该列。所以解决方案应 1行"代码"

 |   A  |     B     |          C
1| adam |   brown   | The longest name is:
2| eva  |  jameson  |    john startstky
3| john |  startsky |

任何帮助非常苛刻。 我已经尝试了

  

= INDEX(A1:A3,MATCH(MAX(LEN(A1:A3)),LEN(A1:A3),0))

但是,它只搜索1列,不适用于多列。

注意:

我并不擅长excel,但这是我认为应该有效的。我不知道如何在excel中做这样的事情。

string longestName
For each row
  if(A[index of row].lenght+B[index of row].lenght > longestName.lenght)
     longestName = A[row].tostring+" "+B[row].tostring

我还想避免使用C语言或基础编程(我不确定excel支持哪种语言)。

编辑: 代码部分仅提示您理解我的思维过程。我知道你不能将这样的代码应用到公式......

2 个答案:

答案 0 :(得分:1)

我们需要连接两个Index函数才能获得返回。我们还需要使用MATCH的数组形式来找到最长的连接。

=INDEX($A$1:$A$3,MATCH(MAX(LEN(A1:A3 & " " & B1:B3)),LEN(A1:A3 & " " & B1:B3),0)) & " " & INDEX($B$1:$B$3,MATCH(MAX(LEN(A1:A3 & " " & B1:B3)),LEN(A1:A3 & " " & B1:B3),0))

作为数组公式,需要在退出编辑模式而不是回车时使用Ctrl-Shift-Enter确认。如果操作正确,那么Excel会将{}放在公式周围。

enter image description here

答案 1 :(得分:0)

如果在C1,C2和C3中你有:

=LEN(A1 & B1)
=LEN(A2 & B2)
=LEN(A3 & B3)

然后在D1中输入这个公式:

=INDEX(A1:B3;MATCH(MAX(C1:C3);C1:C3;0);1) & " " & INDEX(A1:B3;MATCH(MAX(C1:C3);C1:C3;0);2)

你会得到