我的生产数据库中有表情符号问题。因为它已经投入生产,所以我从中获得的是一个自动生成的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 |
+----------------------------------+---+
答案 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))