首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算单元格中作为文本字符串一部分的数值的总和

如何计算单元格中作为文本字符串一部分的数值的总和
EN

Stack Overflow用户
提问于 2022-05-25 13:57:38
回答 1查看 58关注 0票数 -2

我一直在努力解决一个我认为很容易解决的问题,希望能得到一些帮助。我有一个表,只包含一个列和65行。单元格内的值是不同长度的文本字符串。参见以下两个单元格示例的值:

单元(1,2):GammelStreet 1(1瓦特)400 400KJellingeStreet 1(2瓦)700 Kagsaakol军团1(1瓦特)400 400KSibeliusStreet 13 (2 2Watt)700 700KSydfrontStreet 77 (1瓦)400 400KValby 240 (2 2Watt) 700KLyngbyStreet 307 (1Watt) 400KByglandsStreet 16 (1 2Watt)400KEmdepStreet 79 (1Watt) 400KBrolaeggerstrastra6 (1Watt) 400 400KMorescosStreet 14 (2Watt) 700 K

单元(2,2):EgilsStreet 4(3 4Watt)1000 1000KBispeStreet 23 (1 4Watt)400 Koen Street 10 (3 4Watt)1000 1000KBispeStreet 6(1 4Watt)400 400KGalathea (3 4Watt)1000 1000KFarverStreet 10 (1 4Watt)400 400KaarhusStreet 128 a(2 4Watt)700 700KMargretheholmsStreet 48 (3 4Watt)1000 Koen 102 (1 4Watt)400 400KGammelStreet 1 (2Watt+1Joule) 900 900KBorgerStreet 1(4 4Watt)1400Knabrostraedet (1Watt) 400 400KNoerrebroStreet 78 (1 4Watt)KFresunkds84kdsa(2500 K)

细胞(3,2):FredericiaStreet 14 (2 2Watt)700 700KMariendalsStreet 65 (3 2Watt+1 3Joule)1400 KHaspeKogen2 (4Watt) 1400 700KParosStreet 50 (3 3Joule)800 800KHorsevaenget 33 (2 2Watt)700 700KPeter holms Street 4 (2Joule+1Watt) 1000 brahes 240 (2 2Watt)700 700KSkoleStreet 13b (2 2Watt)700 700KParosStreet 1(3 2Watt) 1000KBorgerStreet 30 (31000 2Watt)1000 1000KLavendelstraede (2 2Watt)700 700KPilegaardsStreet 17 (1Watt) 400 800KHorsevaenget 11 ( Cell 700)K22( MargretheholmsStreet 2Watt)MargretheholmsStreet 348(MargretheholmsStreet 248)

我需要对每行中的所有"Watt“值、"Joule”值和"xxyyK“值进行求和,并在新列中为每一行编写结果。对于上述例子,计算结果为:细胞(1,2):be,Watt = 15,Joule =0和"xxyyK“= 5600;细胞(2,2):Watt = 26,Joule =3,"xxyyK”= 8500;细胞(3,2):Watt = 37,焦耳=8,xxyyK= 16500;

EN

回答 1

Stack Overflow用户

发布于 2022-05-25 20:11:00

细胞

(2,2):Watt = 26,Joule =3,"xxyyK“= 8500

我不知道如何得到"xxyyK" = 8500,因为我认为"xxyyK" = 9900

细胞的

(3,2):Watt = 37和Joule =8和xxyyK= 16500

我不知道如何得到"Watt" = 37,因为我认为"Watt" = 40

不管怎样,也许是这样的?

代码语言:javascript
复制
Sub test()
Dim txt As String
Dim cnt As Integer
Dim x As String
Dim xxyyK As Long
Dim watt As Long
Dim joule As Long
Dim pl As Long
Dim wt As Long
Dim jl As Long

For Each cell In Range("A1:A3")
watt = 0: joule = 0: xxyyK = 0: pl = 0: wt = 0: jl = 0
txt = cell.Value
For cnt = 1 To Len(txt)
    If Mid(txt, cnt, 1) = "(" Then
        For i = cnt To Len(txt)
            If Mid(txt, i, 1) = "K" Then
                x = Mid(txt, cnt + 1, i - cnt - 1)
                xxyyK = xxyyK + Trim(Split(x, ")")(1))
                
                    pl = InStr(x, "+")
                    wt = InStr(UCase(x), UCase("watt"))
                    jl = InStr(UCase(x), UCase("joule"))
                    
                    If pl <> 0 Then
                        If wt > jl Then watt = watt + Mid(x, pl + 1, wt - pl - 1): joule = joule + Trim(Split(UCase(x), UCase("joule"))(0))
                        If wt < jl Then joule = joule + Mid(x, pl + 1, jl - pl - 1): watt = watt + Trim(Split(UCase(x), UCase("watt"))(0))
                    Else
                        If wt <> 0 Then watt = watt + Trim(Split(UCase(x), UCase("watt"))(0))
                        If jl <> 0 Then joule = joule + Trim(Split(UCase(x), UCase("joule"))(0))
                    End If
                    
                Exit For
            End If
        Next i
    End If
Next
cell.Offset(0, 1).Value = "Watt = " & watt & ", Joule = " & joule & ", xxyyK = " & xxyyK
Next cell

End Sub

潜艇有3个回路。

  1. 循环到每个单元格,文本
  2. 循环对文本中的每个字符进行检查,并检查字符是否为"(“如果字符为”
  3. “)(”然后从该字符开始循环,直到找到字符"K"

)。

一旦找到char "(“和char "K”),就会将变量x之间的字符提取出来,例如:2Watt)7003Watt + 1Joule) 14002Joule+1Watt) 1000等。

然后通过分裂函数求出xxyyK值(和它)。

然后将"+“(如果有的话)的位置作为变量pl,得到"watt”(如果有的话)作为变量wt的位置,并得到"joule“(如果有的话)作为变量jl的位置。

然后检查pl <> 0(因此,变量x中有一个"+“符号)。

如果是,那么它得到的值瓦特和焦耳(和它)通过中间函数。

如果不是,则通过拆分函数得到瓦特值和焦耳值(和和值)。

该示例的结果放在B栏中:

请注意:代码假定总是会有char "(“和char ")”。瓦特值(如果有的话)和焦耳值(如果有的话)总是在"(“和")”内。在char“之后总是有一个xxyyK值”(以char“K”结尾)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72379017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档