如何 return 首先不从导入范围值中清空单元格?
How to return first not empty cell from importrange values?
我的googlesheetexcel文档包含这样的数据
+---+---+---+---+---+---+
| | A | B | C | D | E |
+---+---+---+---+---+---+
| 1 | | c | | x | |
+---+---+---+---+---+---+
| 2 | | r | | 4 | |
+---+---+---+---+---+---+
| 3 | | | | m | |
+---+---+---+---+---+---+
| 4 | | | | | |
+---+---+---+---+---+---+
列B和D包含IMPORTRANGE
函数提供的数据,它们存储在不同的文件中。
我想用行中的第一个非空值填充列 A,换句话说:所需结果必须如下所示:
+---+---+---+---+---+---+
| | A | B | C | D | E |
+---+---+---+---+---+---+
| 1 | c | c | | x | |
+---+---+---+---+---+---+
| 2 | r | r | | 4 | |
+---+---+---+---+---+---+
| 3 | m | | | m | |
+---+---+---+---+---+---+
| 4 | | | | | |
+---+---+---+---+---+---+
我尝试了 ISBLANK
函数,但很明显,如果列被导入,那么即使该值为空,也不是空白,所以这个函数对我的情况不起作用。然后我在 2 个不同的变体中尝试了 QUERY
函数:
1) =QUERY({B1;D1}; "select Col1 where Col1 is not null limit 1"; 0)
但是当行包含带数字的单元格时,这种情况下的结果是错误的。此查询的结果如下:
+---+---+---+---+---+---+
| | A | B | C | D | E |
+---+---+---+---+---+---+
| 1 | c | c | | x | |
+---+---+---+---+---+---+
| 2 | 4 | r | | 4 | |
+---+---+---+---+---+---+
| 3 | m | | | m | |
+---+---+---+---+---+---+
| 4 | | | | | |
+---+---+---+---+---+---+
2) =QUERY({B1;D1};"select Col1 where Col1 <> '' limit 1"; 0)
/ =QUERY({B1;D1};"select Col1 where Col1 != '' limit 1"; 0)
这根本不起作用,结果总是 #N/A
此外,如果可能的话,我想避免使用嵌套的 IFs
和 javascript 脚本,因为带有 QUERY
函数的解决方案最适合我的情况,因为它很容易扩展到另一列没有任何更深入的编程知识。有什么方法可以简单地使用 QUERY
,而我只是遗漏了一些东西,或者我必须使用 IFs/javascript?
尝试:
=ARRAYFORMULA(SUBSTITUTE(INDEX(IFERROR(SPLIT(TRIM(TRANSPOSE(QUERY(
TRANSPOSE(SUBSTITUTE(B:G, " ", "♦")),,99^99))), " ")),,1), "♦", " "))
选择的列:
我的googlesheetexcel文档包含这样的数据
+---+---+---+---+---+---+
| | A | B | C | D | E |
+---+---+---+---+---+---+
| 1 | | c | | x | |
+---+---+---+---+---+---+
| 2 | | r | | 4 | |
+---+---+---+---+---+---+
| 3 | | | | m | |
+---+---+---+---+---+---+
| 4 | | | | | |
+---+---+---+---+---+---+
列B和D包含IMPORTRANGE
函数提供的数据,它们存储在不同的文件中。
我想用行中的第一个非空值填充列 A,换句话说:所需结果必须如下所示:
+---+---+---+---+---+---+
| | A | B | C | D | E |
+---+---+---+---+---+---+
| 1 | c | c | | x | |
+---+---+---+---+---+---+
| 2 | r | r | | 4 | |
+---+---+---+---+---+---+
| 3 | m | | | m | |
+---+---+---+---+---+---+
| 4 | | | | | |
+---+---+---+---+---+---+
我尝试了 ISBLANK
函数,但很明显,如果列被导入,那么即使该值为空,也不是空白,所以这个函数对我的情况不起作用。然后我在 2 个不同的变体中尝试了 QUERY
函数:
1) =QUERY({B1;D1}; "select Col1 where Col1 is not null limit 1"; 0)
但是当行包含带数字的单元格时,这种情况下的结果是错误的。此查询的结果如下:
+---+---+---+---+---+---+
| | A | B | C | D | E |
+---+---+---+---+---+---+
| 1 | c | c | | x | |
+---+---+---+---+---+---+
| 2 | 4 | r | | 4 | |
+---+---+---+---+---+---+
| 3 | m | | | m | |
+---+---+---+---+---+---+
| 4 | | | | | |
+---+---+---+---+---+---+
2) =QUERY({B1;D1};"select Col1 where Col1 <> '' limit 1"; 0)
/ =QUERY({B1;D1};"select Col1 where Col1 != '' limit 1"; 0)
这根本不起作用,结果总是 #N/A
此外,如果可能的话,我想避免使用嵌套的 IFs
和 javascript 脚本,因为带有 QUERY
函数的解决方案最适合我的情况,因为它很容易扩展到另一列没有任何更深入的编程知识。有什么方法可以简单地使用 QUERY
,而我只是遗漏了一些东西,或者我必须使用 IFs/javascript?
尝试:
=ARRAYFORMULA(SUBSTITUTE(INDEX(IFERROR(SPLIT(TRIM(TRANSPOSE(QUERY(
TRANSPOSE(SUBSTITUTE(B:G, " ", "♦")),,99^99))), " ")),,1), "♦", " "))
选择的列: