我有一个电子表格,其中有多行包含三列(K,L M),其中包含文本(从下拉列表中手动插入)。插入的文本包括“得分”。对于图像中显示的行,得分为3 + 2 + 2 = 7。
我希望能够做的是自动计算得分并显示在N列中。我很高兴在文本中提取分数,但我完全不熟悉Excel的对象模型,以及如何编写可以跨所有行触发的VBA宏。我假设它会以某种方式传递一个范围,或指定一个范围的字符串,但是如何做到这一点现在已经超出了我的范围。也许我只需要一个公式?但是一个调用函数来从单元格中去除非数值数据的那个?
任何帮助表示感谢。
答案 0 :(得分:2)
将此公式放在N2
单元格中并将其完全拖下来。
=LEFT(K2, FIND("-", K2) - 2) + LEFT(L2, FIND("-", L2) - 2) + LEFT(M2, FIND("-", M2) - 2)
有关详细信息,请参阅very simple python program。它对在单元格中连字符(-
)之前存在的所有数字求和。
答案 1 :(得分:1)
尝试:
N2 = LEFT(TRIM(K2),1) + LEFT(TRIM(L2),1) + LEFT(TRIM(M2),1)
正如我在评论中所说,如果这个解决方案超过三列并且/或者得分超过一位数[0-9]
答案 2 :(得分:1)
VBA解决方案,用于执行所有行并将值输入N列:
Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row
'get the last row with data on Column A
For rownumber = 1 To LastRow 'loop through rows
For i = 11 To 13 'loop through columns
strValue = ws.Cells(rownumber, i).Value 'get text string from cell
pos = InStr(strValue, " -") 'find the dash - in cell
If pos > 0 Then 'if dash found
Value = Value + Val(Left(ws.Cells(rownumber, i).Value, pos - 1)) 'remove everything after number
End If
Next i
ws.Cells(rownumber, 14).Value = Value 'write value to column N
Value = 0
Next rownumber
End Sub