如何计算具有表情符号的列中的所有单元格?

时间:2016-02-17 23:37:27

标签: google-sheets emoji formulas

我的生产数据库中有表情符号问题。因为它已经投入生产,所以我从中获得的是一个自动生成的Excel电子表格(.xls),每隔几万行就会出现这种情况。我使用 Google表格来解析此问题,以便轻松分享结果。

我可以使用哪个公式来计算包含表情符号的 n 列中所有单元格的数量?

例如:

Data
+----+-----------------+
| ID | Name            |
+----+-----------------+
| 1  | Chad            |
+----+-----------------+
| 2  | ✨Darla✨         |
+----+-----------------+
| 3  | John Smith      |
+----+-----------------+
| 4  | Austin ⚠️ Powers |
+----+-----------------+
| 5  | Missus         |
+----+-----------------+

Totals
+----------------------------------+---+
| People named Chad                | 1 |
+----------------------------------+---+
| People with emoji in their names | 3 |
+----------------------------------+---+

3 个答案:

答案 0 :(得分:1)

Ben C. R. Leggiero编辑:

=COUNTA(FILTER(A2:A6;REGEXMATCH(A2:A6;"[^\x{0}-\x{F7}]")))

答案 1 :(得分:1)

您无法使用常规公式提取表情符号,因为Google电子表格使用了轻量级re2正则表达式引擎,该引擎缺少many features,包括查找表情符号所需的引擎。

您需要做的是创建自定义公式。选择工具菜单,然后选择脚本编辑器... 。在脚本编辑器中,添加以下内容:

function find_emoji(s) {
  var re = /[\u1F60-\u1F64]|[\u2702-\u27B0]|[\u1F68-\u1F6C]|[\u1F30-\u1F70]|[\u2600-\u26ff]|[\uD83C-\uDBFF\uDC00-\uDFFF]+/i;
  if (s instanceof Array) {
    return s.map(function(el){return el.toString().match(re);});
  } else {
    return s.toString().match(re);
  }
}

保存脚本。返回电子表格,然后测试您的公式=find_emoji(A1)

我的测试结果如下:

| Missus         |    |
| Austin ⚠️ Powers | ⚠   |
| ✨Darla✨        | ✨   |
| joke         |  |

而且,要计算没有表情符号的条目,您可以使用以下公式:

=countif( arrayformula(isblank( find_emoji(filter(F2:F,not(isblank(F2:F)))))), FALSE)

修改

我错了。您可以使用常规公式来提取表情符号。正则表达式语法为[\x{1F300}-\x{1F64F}]|[\x{2702}-\x{27B0}]|[\x{1F68}-\x{1F6C}]|[\x{1F30}-\x{1F70}]|[\x{2600}-\x{26ff}]|[\x{D83C}-\x{DBFF}\x{DC00}-\x{DFFF}]

答案 2 :(得分:1)

这应该有效:

=arrayformula(countif(REGEXMATCH(A2:A6,"[^a-zA-Z\d\s:]"),true))