我正在使用Excel进行资源规划,并尝试在多行项目中为每个人(有时是单个单元格中的多个)提取%分配。
我已经能够在单个单元格中提取特定人员的百分比,但我不确定当且仅当该人员存在于其他单元格中时如何进行求和。
以下是我用于单个单元格的内容:
=MID(M204,SEARCH(B208,M204)+LEN(B208)+2,3)
这将搜索单元格中的特定名称,然后查找之后的百分比(通过查找字符位置+名称中的字符数)并返回接下来的3个字符(即%分配)。理想情况下,我希望这是灵活的,因此它可以返回5或50或100而不是固定的宽度,但还没有到达那一点。
请参阅此屏幕截图,了解我尝试做的事情:
答案 0 :(得分:0)
答案 1 :(得分:0)
一种选择是使用Text to Columns
,并使用SPACE作为分隔符。
您将信息放在电子表格的新区域中,对于有多人的单元格,只需剪切/粘贴其他人。然后找不到/替换,
。
然后,它是一个简单的SUMIF()
:=SUMIF([name range],Name,[percent range])
:
答案 2 :(得分:0)
VBA可以提供解决方案。将此函数插入工作簿模块,并使用它:
=sumPercentage([week number],[name to look up],[range of percentages])
(如果行也被移除,它应该有效。)
Function sumPercentage(wk As String, employee As String, rng As Range) As Double
Dim cel As Range
Dim multNames() As String
Dim i As Long
For Each cel In rng
If InStr(1, cel, ",") > 0 And InStr(1, cel, "%") Then
' There are more than one person in the cell
multNames = Split(cel.Value, ",")
For i = LBound(multNames) To UBound(multNames)
Debug.Print multNames(i)
If Trim(Left(Trim(multNames(i)), WorksheetFunction.Search(" ", Trim(multNames(i))))) = employee Then
sumPercentage = sumPercentage + Mid(multNames(i), WorksheetFunction.Search("(", multNames(i)) + 1, WorksheetFunction.Search("%", multNames(i)) - WorksheetFunction.Search("(", multNames(i)) - 1)
End If
Next i
ElseIf cel.Value <> "" And InStr(1, cel, "%") Then
If Trim(Left(cel.Value, WorksheetFunction.Search(" ", cel.Value))) = employee Then
sumPercentage = sumPercentage + Mid(cel.Value, WorksheetFunction.Search("(", cel.Value) + 1, WorksheetFunction.Search("%", cel.Value) - WorksheetFunction.Search("(", cel.Value) - 1)
End If
End If
Next cel
sumPercentage = sumPercentage / 100
End Function
答案 3 :(得分:0)