2016-03-23 176 views
2

即使我提出了我的问题的解决方案,我希望有人可以帮我找一个新的事实并非如此“笨重”一些好的解决方案

这里是我的情况:

  • A列中的细胞或者包含一个值(时间戳)或者是空白
  • 每个时间戳之间的空白的细胞数而变化
  • B列的单元总是包含一个值(字符串)

以下是我需要:

    在C列
  • ,在A列中

时间戳之间结合的弦列B因为我知道,在列空白的最大数量在两个时间戳之间是5,我创建了这个功能..(我删除了“”之间的空格,并在每个IF前面插入了一个换行符,以便显示原因)

=IF(AND(ISNUMBER(A1),A2="",A3="",A4="",A5=""),B1&""&B2&""&B3&""&B4&""&B5, 
IF(AND(ISNUMBER(A1),A2="",A3="",A4=""),B1&""&B2&""&B3&""&B4, 
IF(AND(ISNUMBER(A1),A2="",A3=""),B1&""&B2&""&B3, 
IF(AND(ISNUMBER(A1),A2=""),B1&""&B2, 
IF(ISNUMBER(A1),B1,""))))) 

如果空白的最大数量为10,那么公式将会变得非常长...因此,任何想法如何以更优雅的方式来到相同的解决方案,都将受到赞赏! 谢谢, Ivana

+1

如果你有Excel 2016,你可以使用'CONCAT'功能。你可以使用VBA。您可以使用以C2开头的公式,并将B2与上面的行连接起来。 –

+0

在VBA中执行起来更容易。 Ron的方法可以工作,但它会在列C的单元格中留下与列A中的空白相同行中的字符串构建块。您还需要添加一个IF语句来检查是否是时间戳记在列中,并从头开始重新连接。例如:if(A2 <>“”then B1,B1&“”&C2) –

+0

@RonRosenfeld - 要明确[TEXTJOIN](https://support.office.com/en-us/article/ TEXTJOIN-function-357b449a-ec91-49d0-80c3-0e8fc845691c)和[CONCAT](https://support.office.com/en-us/article/CONCAT-function-9b1a9a3f-94ff-41af-9736-694cbd6b4ca2)是仅适用于[Excel 2016](https://support.office.com/zh-cn/article/What-s-new-in-Excel-2016-for-Windows-5fdb9208-ff33-45b6-9e08-1f5cdb3a6c73)与Office 365订阅(或Excel Online)。 – Jeeped

回答

0

如果你能够添加一些列,你可以简化你的公式。

我会添加三个新的列而不是一个。我的解决方案假定您在第1行的顶部有一个标题。它还允许时间戳之间超过五个空白,如果有的话。

在第2行中,输入以下公式:

Column C: =IF(ISNUMBER(A2),B2,C1 & " " & B2) 
Column D: =IF(ISNUMBER(A2),A2,D1) 
Column E: =IF(D2<>D3,C2,"") 

粘贴或拖动这些到您的时间戳和字符串末尾填写栏。

列D和E将包含您的时间戳和连接的B字符串。您可以选取它们或过滤它们以获取非空白字符串。


编辑重复戳

如果副本可能发生,你需要单独跟踪他们,然后更改E列在第2行如下:像以前

Column E: =IF(ISNUMBER(A3),C2,IF(ISBLANK(B3),C2,"")) 

复制下来。

+0

非常感谢你,这正是我一直在寻找的。我甚至想将更多的功能组合到更多的列中,但我不确定如何正确地组合它们。只要时间戳不相同(应该不会太频繁地发生),它完美地工作! –

+0

如果可能有重复时间戳,应该对它们进行核算。请参阅我的修订。 – Tony

+0

我永远感谢! –

0

您可以将一些旧的INDEX function范围寻址与新的TEXTJOIN function¹应用。

xlol_text_join_timestamp

在C2如,

=IF(A2<>TEXT(,), IFERROR(TEXTJOIN(CHAR(44), TRUE, B2:INDEX(B:B, MATCH(1E+99, A$1:A1))), TEXT(,)), TEXT(,)) 

必要向下填充。


¹TEXTJOIN function成为可与Excel 2016 with Office 365和Excel网络。

+0

感谢这个伟大的建议 - 我可以看到你已经投入了很多工作,我非常感激。我会认真考虑升级到Excel 2016(我目前正在使用2013版本) - 我只有一个小的跟进问题:如果我希望Textjoin在时间戳之间组合字符串,如何更改函数?在你的例子中,将是2-7,8-11,12-14行...... –

相关问题