在A1单元格里数组为1+10-20 在B1单元格里数组为-2+55-122;请问如何把A1和B1单格里正负数各自提取求和,如这样,提取A1单元与B1的数字,1、10、55在C1求和。提取-20、-2、-122在D1求和,求这两个公式,请指教!
你可以直接copy这几个公式
C1: =SUMIF(D3:D11,">0")
D1: =SUMIF(D3:D11,"<0")
C2: =SUBSTITUTE(SUBSTITUTE(IF(LEFT(A1,1)="-",0&A1,A1)&IF(LEFT(B1,1)="-",B1,"+"&B1),"+",","),"-",",-")&","
C4: =FIND(",",C$2,C3+1)
D3: =VALUE(MID($C$2,C3+1,C4-C3-1))
甚至可以适用于类似 3+12-45+32+2 和 8-9-111+6等复杂情况。
如果你非得用一个函数实现(不用任何辅助单元格),需要用VB。
C1: =SUMIF(D3:D11,">0")
D1: =SUMIF(D3:D11,"<0")
C2: =SUBSTITUTE(SUBSTITUTE(IF(LEFT(A1,1)="-",0&A1,A1)&IF(LEFT(B1,1)="-",B1,"+"&B1),"+",","),"-",",-")&","
C4: =FIND(",",C$2,C3+1)
D3: =VALUE(MID($C$2,C3+1,C4-C3-1))
甚至可以适用于类似 3+12-45+32+2 和 8-9-111+6等复杂情况。
如果你非得用一个函数实现(不用任何辅助单元格),需要用VB。
补充回答: VB方法如下,
在Excel里,同时按Alt和F11,进入VB界面,右键点左上窗口的Thisworkbook,插入,模块,在右边窗口粘贴如下代码:
Function SumP(Range1 As Range, Range2 As Range) As Long
Dim i, j As Byte
Dim tmp As String
SumP = 0
j = 1
tmp = IIf(Left(Range1, 1) = "-", Range1, " " & Range1) & IIf(Left(Range2, 1) = "-", Range2, "+" & Range2) & " "
tmp = Replace(tmp, "-", " -")
tmp = Replace(tmp, "+", " ")
For i = 1 To Len(tmp) - Len(Replace(tmp, " ", "")) - 1
If CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10))) > 0 Then SumP = SumP + CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10)))
在Excel里,同时按Alt和F11,进入VB界面,右键点左上窗口的Thisworkbook,插入,模块,在右边窗口粘贴如下代码:
Function SumP(Range1 As Range, Range2 As Range) As Long
Dim i, j As Byte
Dim tmp As String
SumP = 0
j = 1
tmp = IIf(Left(Range1, 1) = "-", Range1, " " & Range1) & IIf(Left(Range2, 1) = "-", Range2, "+" & Range2) & " "
tmp = Replace(tmp, "-", " -")
tmp = Replace(tmp, "+", " ")
For i = 1 To Len(tmp) - Len(Replace(tmp, " ", "")) - 1
If CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10))) > 0 Then SumP = SumP + CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10)))
j = InStr(j + 1, tmp, " ")
Next i
End Function
Function SumN(Range1 As Range, Range2 As Range) As Long
Dim i, j As Byte
Dim tmp As String
SumN = 0
j = 1
tmp = IIf(Left(Range1, 1) = "-", Range1, " " & Range1) & IIf(Left(Range2, 1) = "-", Range2, "+" & Range2) & " "
tmp = Replace(tmp, "-", " -")
tmp = Replace(tmp, "+", " ")
For i = 1 To Len(tmp) - Len(Replace(tmp, " ", "")) - 1
If CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10))) < 0 Then SumN = SumN +
Next i
End Function
Function SumN(Range1 As Range, Range2 As Range) As Long
Dim i, j As Byte
Dim tmp As String
SumN = 0
j = 1
tmp = IIf(Left(Range1, 1) = "-", Range1, " " & Range1) & IIf(Left(Range2, 1) = "-", Range2, "+" & Range2) & " "
tmp = Replace(tmp, "-", " -")
tmp = Replace(tmp, "+", " ")
For i = 1 To Len(tmp) - Len(Replace(tmp, " ", "")) - 1
If CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10))) < 0 Then SumN = SumN +
CLng(Trim(Mid(Left(tmp, InStr(j + 1, tmp, " ") - 1), j + 1, 10)))
j = InStr(j + 1, tmp, " ")
Next i
End Function
会到Excel里,在C1输入 =sump(a1,b1),在D1输入 =sumn(a1,b1)
这两个函数是通过VB自定义的。
以上方法,全部经过检验,满足你的要求。
j = InStr(j + 1, tmp, " ")
Next i
End Function
会到Excel里,在C1输入 =sump(a1,b1),在D1输入 =sumn(a1,b1)
这两个函数是通过VB自定义的。
以上方法,全部经过检验,满足你的要求。
公式是单个或多个函数的结合运用。
AND “与”运算,返回逻辑值,仅当有参数的结果均为逻辑“真(TRUE)”时返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。 条件判断
AVERAGE 求出所有参数的算术平均值。 数据计算
AND “与”运算,返回逻辑值,仅当有参数的结果均为逻辑“真(TRUE)”时返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。 条件判断
AVERAGE 求出所有参数的算术平均值。 数据计算
COLUMN 显示所引用单元格的列标号值。 显示位置
CONCATENATE 将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。 字符合并
COUNTIF 统计某个单元格区域中符合指定条件的单元格数目。 条件统计
DATE 给出指定数值的日期。 显示日期
count函数怎么统计文字
DATEDIF 计算返回两个日期参数的差值。 计算天数
DAY 计算参数中指定日期或引用单元格中的日期天数。 计算天数
DCOUNT 返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。 条件统计
FREQUENCY 以一列垂直数组返回某个区域中数据的频率分布。 概率计算
IF 根据对指定条件的逻辑判断的真假结果,返回相对应条件触发的计算结果。 条件计算
INDEX 返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。 数据定位
INT 将数值向下取整为最接近的整数。 数据计算
ISERROR 用于测试函数式返回的数值是否有错。如果有错,该函数返回TRUE,反之返回FALSE。 逻辑判断
LEFT 从一个文本字符串的第一个字符开始,截取指定数目的字符。 截取数据
LEN 统计文本字符串中字符数目。 字符统计
MATCH 返回在指定方式下与指定数值匹配的数组中元素的相应位置。 匹配位置
MAX 求出一组数中的最大值。 数据计算
MID 从一个文本字符串的指定位置开始,截取指定数目的字符。 字符截取
MIN 求出一组数中的最小值。 数据计算
MOD 求出两数相除的余数。 数据计算
MONTH 求出指定日期或引用单元格中的日期的月份。 日期计算
NOW 给出当前系统日期和时间。 显示日期时间
MATCH 返回在指定方式下与指定数值匹配的数组中元素的相应位置。 匹配位置
MAX 求出一组数中的最大值。 数据计算
MID 从一个文本字符串的指定位置开始,截取指定数目的字符。 字符截取
MIN 求出一组数中的最小值。 数据计算
MOD 求出两数相除的余数。 数据计算
MONTH 求出指定日期或引用单元格中的日期的月份。 日期计算
NOW 给出当前系统日期和时间。 显示日期时间
OR 仅当所有参数值均为逻辑“假(FALSE)”时返回结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。 逻辑判断
RANK 返回某一数值在一列数值中的相对于其他数值的排位。 数据排序
RIGHT 从一个文本字符串的最后一个字符开始,截取指定数目的字符。 字符截取
SUBTOTAL 返回列表或数据库中的分类汇总。 分类汇总
SUM 求出一组数值的和。 数据计算
SUMIF 计算符合指定条件的单元格区域内的数值和。 条件数据计算
TEXT 根据指定的数值格式将相应的数字转换为文本形式 数值文本转换
TODAY 给出系统日期 显示日期
VALUE 将一个代表数值的文本型字符串转换为数值型。 文本数值转换
VLOOKUP 在数据表的首列查指定的数值,并由此返回数据表当前行中指定列处的数值 条件定位
WEEKDAY 给出指定日期的对应的星期数。 星期计算
Excel 部分函数列表.
函数的步骤:①选中存放结果的单元格
②单击“=”(编辑公式)
③函数(单击“三角形”形状按钮。或者直接输入函数名
④选范围
⑤CTRL+回车键
①求和函数SUM()
②平均函数AVERAGE()
③排位函数RANK ()
例: Rank(A1:$A$1:$A$15)
行号和列号前面加上“$“符号 A叫行号。1或者15叫列号,表示单元格所在的位置 数据单元格在A列1号或者是A列15号
④最大值函数MAX ()
③函数(单击“三角形”形状按钮。或者直接输入函数名
④选范围
⑤CTRL+回车键
①求和函数SUM()
②平均函数AVERAGE()
③排位函数RANK ()
例: Rank(A1:$A$1:$A$15)
行号和列号前面加上“$“符号 A叫行号。1或者15叫列号,表示单元格所在的位置 数据单元格在A列1号或者是A列15号
④最大值函数MAX ()
⑤最小值函数MIN ()
⑥统计函数 COUNTIF( )
计算满足给定单元格的数目
例:Countif ( A1:B5,”>60”)
统计分数大于60分的人数,注意,条件要加双引号,在英文状态下输入。
⑦单元格内容合并CONCTENATE()
将若干文字串合并到一个字符串中
⑧ RIGHT(A1,4)
提取字符串最右边的若干字符,长度为4位
⑨LEFT ( )
返回字符串最左边的若干字符
⑩MIDB()
自文字的指定位置开始向右提取指定长度的字符串
11、重复函数 REPT()
单元格重量出现的次数。
12、NOW()
返回电脑内部的系统日期与时间
13、MONTH( )
将序列数转换为对应的月份数
⑩MIDB()
自文字的指定位置开始向右提取指定长度的字符串
11、重复函数 REPT()
单元格重量出现的次数。
12、NOW()
返回电脑内部的系统日期与时间
13、MONTH( )
将序列数转换为对应的月份数
编者语:Excel是办公室自动化中非常重要的一款软件,很多巨型国际企业都是依靠Excel进行数据管理。它不仅仅能够方便的处理表格和进行图形分析,其更强大的功能体现在对数据的自动处理和计算,然而很多缺少理工科背景或是对Excel强大数据处理功能不了解的人却难以进一步深入。编者以为,对Excel函数应用的不了解正是阻挡普通用户完全掌握Excel的拦路虎,然而目前这一部份内容的教学文章却又很少见,所以特别组织了这一个《Excel函数应用》系列,希望能够对Excel进阶者有所帮助。《Excel函数应用》系列,将每周更新,逐步系统的介绍Excel各类函数及其应用,敬请关注!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论