在Excel中打高尔夫球的技巧?


20

奇怪的是我还没有看到它,因为Excel似乎是代码打高尔夫球的有效语言(尽管它的“编译器”不是免费的)。

Excel有点像打高尔夫球的通配符,擅长于中等复杂度的高尔夫挑战,有时甚至是更简单的挑战。通常,Excel擅长处理字符串操作和混合的字符串-数字操作。

您在Excel中打高尔夫球有哪些一般提示?我正在寻找可用于编码一般至少在某种程度上特定于Excel(NOT VBA)的高尔夫问题的想法。请给每个答案一个提示。


4
显然,细胞自动机不是与excel相关的东西... :(

我想知道使用VBA 创建UDF是否有效?
danieltakeshi

1
@danieltakeshi-不; 好吧,这不是一个Excel答案-如果您改为使用Excel VBA,然后从通常被认为有效的立即窗口,活动表或子例程中调用它
Taylor Scott

Answers:


11

参考速记:

如果您的程序需要接受多个输入,则可能希望能够一次将所有输入全部收集。要将多个单元格读取为数组,可以执行以下示例:

示例:
=len(A1)+Len(B1)+LEN(C1)
可能是
=SUM(LEN(A1:C1))

=SUM(LEN(A1:C1 A2:C2 A3:C3))
可能
=SUM(LEN(A1:C3))

=SUM(LEN(A1:A1024))
可能
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
可能
=SUM(LEN(A:C))


1
我知道这不是一个很好的技巧,但是它的特殊性足以使我认为应该包括在内。

9

连接简写:

只要第一个参数是字符串或单元格,CONCATENATE就可以在&100%的时间内用该符号替换该函数。

例如:
=CONCATENATE(A1,B1)
可以缩短为
=A1&B1


9

阵列向量化

每当函数将数组作为参数而不是单例作为参数时,该函数还将输出带有结果值的数组到相应的指标。

示例:
=LEN(A1)+LEN(B2)+LEN(C3)
可以替换为
=SUM(LEN({A1,B2,C3}))


1
如果我的记忆力很好,则此过程通常称为“矢量化”。
Conor O'Brien

@ ConorO'Brien谢谢!我改变了答案!

2

将数字转换为文本:

这是一个非常简单的技巧,但对于某些人来说还是有用的...

  • 如果您需要将数字从公式中转换为文本,请使用串联运算符将数字的两个部分作为字符串连接起来(例如1&23)。
  • 如果您需要将数字转换为文本以供单元格引用使用(即A1),请将单元格的“ 数字格式 ” 更改为“ 文本”以消除对多余字节的需求。
  • 请参阅下表,以比较数字文本方法。

快速参考图:

+-------------------------------------------------------------------------------------+
|   | A               | B        | C         | D                | E                   |
|-------------------------------------------------------------------------------------|
| 1 | Formula         | Bytes    | Result    | ISTEXT(cell)¹    | ISTEXT(formula)²    |
|-------------------------------------------------------------------------------------|
| 2 | =TEXT(123,0)    | 12       | 123       | TRUE             | TRUE                |
| 3 | ="123"          | 6        | 123       | TRUE             | TRUE                |
| 4 | =1&23           | 5        | 123       | TRUE             | TRUE                |
| 5 | '123            | 4        | 123       | TRUE             | NOT VALID           |
| 6 | 123             | 3        | 123       | TRUE             | FALSE               |
| 7 | 123             | 3        | 123       | FALSE            | FALSE               |
+-------------------------------------------------------------------------------------+

Note: The result for cell C6 has been formatted as text, whereas the result for C7 has not.

¹ Denotes =ISTEXT(C2), =ISTEXT(C3), =ISTEXT(C4), etc.
² Denotes =ISTEXT(TEXT(123,0)), =ISTEXT("123"), =ISTEXT(1&23), etc.

1

细胞阵列的向量化:

带数组的矢量化技巧展示了如何通过使用数组内的特定格式来简化带有数组的功能。可以对单元格做同样的事情,从长远来看可以节省很多字节。假设您有以下工作表:

示例表

我们希望找到一种水果的最高保质期。

如果没有向量化,则可能会使用两个公式,如下所示: 在此处输入图片说明

这确实给出了正确的答案,但是此高尔夫球的得分是非常规的,并且可能不会被广泛接受。最重要的是,它使用了下拉功能(Ew),使答案令人困惑。

相反,我们可以使用E2中的公式将函数放在D列中。为此,将您的变量(在本例中为B2和C2)替换为要测试范围的数组。因此,您的公式变为:
在此处输入图片说明

这样可以节省一些字节,并使您的条目正确可评分。



0

ISBLANK()速记:

可以使用而不是=ISBLANK(A1)使用=A1=0来确定一个单元格(即A1)是否为空。

注意:如果单元格 A1 包含, 则此快捷方式将不起作用0在这种情况下,您将需要使用 =A1=""


0

缩短工作表名称

如果重命名Sheet2为,S则引用Sheet2!a0变为S!a0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.