我试图计算子字符串在Excel中的字符串数据列中出现的次数.请参阅以下示例.
字符串数据列(推文)如下所示:
A
1 An example string with @username in it
2 RT @AwesomeUser says @username is awesome
Run Code Online (Sandbox Code Playgroud)
带有"substrings"(Twitter屏幕名称)的列如下所示:
B
1 username
2 AwesomeUser
Run Code Online (Sandbox Code Playgroud)
我想使用公式来计算来自B1,B2等的子字符串出现在A列的字符串中的次数.例如:搜索B1的公式将返回"2"并且搜索B2将返回"1".
我不能这样做:
=COUNTIF(A:A, "username")
Run Code Online (Sandbox Code Playgroud)
因为COUNTIF只查找字符串,而不是子字符串.该公式将始终返回"0".
这是我认为可以做到的公式:
=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username"))
Run Code Online (Sandbox Code Playgroud)
不幸的是,我在B列中有16,000个条目,在A中有数万个,因此即使在高功率PC上计数字符也不起作用(同样,该函数返回的结果也是可疑的).
我想过使用:
=COUNTIF(A:A, "*username*")
Run Code Online (Sandbox Code Playgroud)
但COUNTIF需要一个带星形运算符的字符串; 由于数据量的原因,我需要使用单元格引用.
我的问题:有谁知道如何使用这个公式?如果使用COUNTIF,如何在语句的条件部分中获取单元格引用(或使用函数替换COUNTIF语句的条件部分中引用的单元格中的字符串)?
我知道我可以解析数据,但我想知道如何在Excel中执行此操作.
要求:
如果单元格A1中的字符串包含"abc"作为字符串的一部分
然后赋值"绿色"
否则,如果单元格A1中的字符串包含"xyz"作为字符串的一部分
然后赋值"黄色"
其他
赋值"红色"
我试过这个:
=IF(FIND("~",SUBSTITUTE(A1,"abc","~",1))<>"#VALUE!", "Green", IF(FIND("~",SUBSTITUTE(A1,"xyz","~",1))<>"#VALUE!", "Yellow", "Red"))
它可以工作,如果第一个IF是True,在其他情况下它会给出#VALUE!作为输出.
无法弄清楚什么是错的.
我有一个VBA宏来验证用户输入的数据(我没有故意使用数据验证/条件格式).
我正在使用Worksheet_Change事件来触发代码,我现在遇到的问题是,当有行更改时.我不知道它是否是删除/插入行.
无论如何要区分那两个?
这纯粹是Excel表格问题.
我的时间跨度基本上是两个单元格之间的差异,每个单元格包含一个日期:
通过将数字格式更改为,我已设法获得小时数和分钟数的时差[h]:mm.现在我希望得到天数,小时数和分钟数的差异.我尝试将数字格式设置为[d]:[h]:[mm]但Excel不接受它.
这就是我现在拥有的:
A B C (=A2-A1)
---------------- ---------------- ----------
1| 14/10/2011 00:00 17/10/2011 07:50 79:50
2| 14/10/2011 00:00 17/10/2011 11:00 83:00
Run Code Online (Sandbox Code Playgroud)
这是我想要的:
A B C (=A2-A1)
---------------- ---------------- ----------
1| 14/10/2011 00:00 17/10/2011 07:50 3:7:50
2| 14/10/2011 00:00 17/10/2011 11:00 3:11:00
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?有没有可用的数字格式?
我有一个宏,我在文本框中指定日期(以mm/dd/yyyy为单位),我想以yyyy-mm-dd格式为A列设置此值.我有以下代码:
Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value
Sheet1.Range("A2", "A50000") = Format(Date, "yyyy-mm-dd")
Run Code Online (Sandbox Code Playgroud)
...当我运行宏时,日期仍为mm/dd/yyyy格式.
我怎样才能改变它,使它符合我想要的格式?我一直在尝试通过谷歌研究的多种代码,没有什么能按照我想要的方式设置格式.
任何帮助将不胜感激...
编辑:OP的评论完整代码如下:
Workbooks.Add
Range("A1") = "Acctdate"
Range("B1") = "Ledger"
Range("C1") = "CY"
Range("D1") = "BusinessUnit"
Range("E1") = "OperatingUnit"
Range("F1") = "LOB"
Range("G1") = "Account"
Range("H1") = "TreatyCode"
Range("I1") = "Amount"
Range("J1") = "TransactionCurrency"
Range("K1") = "USDEquivalentAmount"
Range("L1") = "KeyCol"
Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value
Sheet1.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd"
Run Code Online (Sandbox Code Playgroud) 我有一个公式,检查单元格是否以文本"A"开头,返回拾取"B"表示收集,C表示预付费.
但它似乎没有正常工作
A和C都返回Prepaid ......
=LOOKUP(LEFT(A1),{"A","B","C"},{"Pick Up","Collect","Prepaid"})
我有一张看起来像这样的桌子
B C
43 XS 6
44 S 11
45 M 16
46 L 21
47 XL 26
48 XXL 31
Run Code Online (Sandbox Code Playgroud)
我写了这个公式:
`VLOOKUP("S",B43:C48,2)`
Run Code Online (Sandbox Code Playgroud)
它返回值为21.为什么?!它应该返回11!
更新我在另一个表中重现了这个确切的错误.VLOOKUP当搜索值是数字时起作用,但在使用字符串时始终失败.
这段代码已经在网上漂浮了很多年 - 它显然能够提供密码来解密你不知道密码的excel电子表格.
http://www.theofficeexperts.com/VBASamples/Excel02.htm
我对它是如何工作感兴趣,但我似乎无法解决这个问题.我假设它是在某个值下加密的,可以通过多种方式获得(网上的一些地方说它会给你原始密码或另一个可以工作的密码)有点像公钥 - 你可以有100个公钥,所有公钥都可以使用一个私钥.
对我来说,似乎它正在创建整数变量并用特定数字填充它们,然后将该数字转换为相关字符.这些总是不一样吗?如果是这样,Excel保护是否有"主密码"?
谢谢大家!
编辑:我注意到我发布的示例代码中的For n = 32 To 126.使用ASCII表进行交叉引用,该表似乎是从空间到波浪号的所有字符.这是某种字典攻击我不理解语法吗?