我需要提取分号之间的特定单词,条件是这些单词包含“@”,这意味着电子邮件。
这是一个例子:
A1 >> james john;Paris street;p.o. box:12345;tel.987654321;username@site.com;usa
B1 >> david eric;34th street;tel.543212345;name@web.net;canada;ottawa
Run Code Online (Sandbox Code Playgroud)
... 等等
请注意,电子邮件没有特定的位置,因此它可以位于任何地方。另外,除了“@”之外没有常见的单词或字符,因此必须有一个公式在分号+包含的“@”之间进行选择,以提取电子邮件并将其放入A2和B2等中
我有一个Excel电子表格,它从我需要运行计算的其他来源导入数据.我需要处理的数据在命名范围内 - 它恰好在C12:C36范围内 - 但它被称为"SumData".
此范围内的值包含许多错误,目前包括#NUM!和#N/A,但可能包含其他错误.我需要总结这些价值观.
我理解如何做总和公式:
=SUM(SumData)
Run Code Online (Sandbox Code Playgroud)
要么
=SUM(C12:C36)
Run Code Online (Sandbox Code Playgroud)
我也可以使用IFERROR来检查错误:
=IFERROR(C12:C36, 0)
Run Code Online (Sandbox Code Playgroud)
但IFERROR似乎只检查当前相应的行到我输入的公式.即如果我的公式是在D12中输入的,它只检查行C12上的错误,并返回该值(如果C12包含错误,则返回0).
如果我把两者结合起来:
=SUM(IFERROR(SumData,0))
Run Code Online (Sandbox Code Playgroud)
我没有得到有效的返回值.它基本上给了我最近的相应行 - 例如:
C D
-----------
12 #NUM!
13 2 =SUM(IFERROR(SumData,0)) = 2 (I would expect this to produce 48)
14 5
15 7
16 #N/A
17 23
18 6
19 5
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一个MATCH返回有效行号的表达式。
我现在需要将此结果与已知的列标识符组合以返回该单元格的结果。
所以,如果A50= 上的东西"apple",那么我可以得到 cell 的内容D50。
我看了看INDIRECT和INDEX,但我看不出它有什么帮助。
回答:
=INDEX('SHEET1'!A:D,MATCH(SHEET2!A2,'SHEET1'!B:B,0),4)
Run Code Online (Sandbox Code Playgroud)
我得INDEX工作了。这需要更多的阅读。
'SHEET1'!A:D是要使用的范围INDEX。
MATCH(SHEET2!A2,'SHEET1'!B:B,0)正在根据我的MATCH标准拉行。
4是柱以从使用所述返回单元格内容行从该数中MATCH的上方。
希望这将有助于其他人了解如何使用INDEX.
所有,
我在Excel宏中遇到一些VBA代码的错误.这是我正在尝试的工作流程:
一旦我知道这个范围,我使用下面的代码写入新创建的工作表代码模块,这样我就可以设置'change_event'.我只想在我刚刚确定的范围内的值发生变化时触发change_event:`
Dim Startline As Long
Startline = 1
Dim x As Integer
x = Errors.Count - 1
Dim rng As Range
Set rng = Range("D" & LastRow - x & ":" & "D" & LastRow)
With ThisWorkbook.VBProject.VBComponents(VRS.CodeName).CodeModule
Startline = .CreateEventProc("Change", "Worksheet") + 1
.InsertLines Startline, "Dim rng As Range "
Startline = Startline + 1
.InsertLines Startline, "Set rng = Range(" & """" & CStr(rng.Address) & """" & ")"
Startline = Startline + 1
.InsertLines Startline, …Run Code Online (Sandbox Code Playgroud)所以我在我的工作表中计算基本统计数据,它包括如下代码:
xxx = Application.worksheetfunction.平均等(等等)
yyy = Application.worksheetfunction.min(等等等
zzz = Application.worksheetfunction.最大(等等等
我的问题:是否有一个RMS等效函数,我可以简单地将其插入代替我在该代码中具有'average,min,max'函数的位置?如果没有,那么编写RMS解决方案的最有效方法是什么?
我希望我已经明确地说明了目标.我很好奇VBA是否有预定义的RMS功能,或者我是否需要创建某种用户定义的功能?〜其中我也很新,所以如果没有简单的代码行为此写,我将不得不在UDF上做更多的阅读.
编辑:
我有大约30,000行,为简单起见:想象两列.A列具有年份,即1941年或其他任何直至2008年.B列是数值.我只是想把代码放在一起,给出平均值,最小值,最大值和RMS值的十年摘要.
我正在尝试创建一个函数 MonstersInLevel(),它根据第一列的值过滤我的“LevelMonsters”命名范围的第二列。该范围的第一列表示游戏级别 ID,第二列表示出现在该级别中的怪物 ID。这是我的范围的样子。
如果我调用 MonstersInLevel(2),我希望该函数返回一个由“2”、“3”和“4”组成的范围。
Function MonstersInLevel(level As Integer) As Range
MonstersInLevel = Application.WorksheetFunction.Filter(Range("LevelMonsters").Columns(2), Range("LevelMonsters").Columns(1) = level)
End Function
Run Code Online (Sandbox Code Playgroud)
我得到:
公式中使用的值的数据类型错误
我将 FILTER 函数用作 Excel 公式。我认为 FILTER 标准的 Excel 和 VBA 语法存在一些差异。
我WorksheetFunction.Transpose在 VBA中使用将混合日期/字符串的一维数组转换为二维数组以写入工作表。
将我的 Windows 区域设置设置为DMY,写回的日期正在切换月/日。
我在Excel电子表格中有以下数据:
A B C
1 b b b
Run Code Online (Sandbox Code Playgroud)
我想在比较行中每个(文本)值的数据后面的列中放置一个公式,如果它们全部相同,则返回TRUE,即A = B = C. 如果一个或多个值不一致,我希望它返回FALSE.即
A B C D
1 b b b TRUE
2 b e b FALSE
3 e b b FALSE
Run Code Online (Sandbox Code Playgroud)
我知道像AND这样的逻辑函数,因此可以构造类似的东西
AND(A1=B1,A1=C1.. etc)但是,一旦列数增加,这很快就会变得笨拙.
重组数据是不可行的.
有谁知道OOTB/VB解决方案?
所以我试图从数据表中进行经典的2路查找,即:
Jan-00 Feb-00 Mar-00
Joe
Bill
Steve
Run Code Online (Sandbox Code Playgroud)
所以,我想在"Mar-00"中查找"Joe"的值.
这种类型的查找通常使用INDEX和MATCH函数的组合来完成.这种方法的缺点是MATCH只能作用于1维范围,因此在包含大量表格的大型电子表格中,您最终必须为每个表定义3个范围而不是一个(一个用于数据,一个用于标题行,左列一个).
我希望能够做到这样的事情:
index(data1,match("Mar-00",getrow(mydata,1)),match("Joe",getcolumn(mydata,1)))
Run Code Online (Sandbox Code Playgroud)
excel中有这样的东西(或者,这样做的方式完全不同,也许是excel中的一些新功能)?