Excel计算文本值中包含数字1的列数

Posted

技术标签:

【中文标题】Excel计算文本值中包含数字1的列数【英文标题】:Excel count number of columns that contain the number 1 within text values 【发布时间】:2021-02-24 15:27:48 【问题描述】:

我正在尝试提出一个简单的解决方案来计算包含某些数字的列数。可以是公式,也可以是函数。

单元格将包含数字和字母的组合,即第 1 组、第 11 节、任务 21、Lot1、Item-1 等...

我想要做的是只计算所有的 1,然后是 2,等等......显然不是 21 或 11。 可能有空间,也可能没有,没有什么是一成不变的。 我正在尝试使公式起作用,但我认为我需要执行一个函数并从我想要结果的单元格中调用它。即“=CountCols("1")。

我能想到一个函数,但它看起来很笨拙,我想看看是否有人有更优雅的方法。 感谢您提供任何帮助或想法。

【问题讨论】:

另外,数字可能不是文本字符串中的最后一个字符,我忘了包括那些可能性,即 RY98 (1) 所以对于 RY98 (1) 并且您想计算 98 我假设您不想将其视为匹配项? 正确。我只会从 1 数到 15。我不需要其他任何东西。 RY 文本中永远不会有任何低于 60 的数字。 看看你想到的功能会很有用。如果您可以edit your question 包含它,那将很有帮助 【参考方案1】:

感谢大家查看我的问题。

这是由我分享这篇文章的朋友回答的。她创造了这两个功能,他们实现了梦想。 (我只需要在特定工作表中搜索每列的第 6 行。)

Public Function countColumnsWithWord(strToFind As String, sSheet As String) As Long
    
    Dim wks As Worksheet
    Dim c As Long
    Dim r As Long
    Dim countOfFound As Long
    Dim iLastCol As Integer
    Dim strToSearch As String
    
    Set wks = Application.Worksheets(sSheet)
    
    iLastCol = wks.Cells(6, wks.Columns.Count).End(xlToLeft).Column
    
    'start in col 2
    'only row 6
    
    c = 2
    r = 6
    For c = 1 To iLastCol
      If wks.Cells(r, c).Value <> "" And Not IsEmpty(wks.Cells(r, c).Value) Then
        strToSearch = CStr(wks.Cells(r, c).Value)
        If findInString(strToFind, strToSearch) = True Then
          countOfFound = countOfFound + 1
        End If
      End If
    Next c

    countColumnsWithWord = countOfFound

End Function


Public Function findInString(strToFind As String, strToSearch As String)
  
  Dim isFound As Boolean
  Dim strCurrent As String
  Dim i As Long
  Dim strToSearchLength As Long
  
  strToSearchLength = Len(strToSearch)
  
  isFound = False

  strCurrent = ""
  
  i = 1
  While i < strToSearchLength + 1 And isFound = False
    If Mid(strToSearch, i, 1) = " " Then
      If strToFind = strCurrent Then
        isFound = True
      Else
        strCurrent = ""
      End If
    Else
      strCurrent = strCurrent & Mid(strToSearch, i, 1)
    End If
    i = i + 1
  Wend
  
  If isFound = False And strToFind = strCurrent Then
    isFound = True
  End If

  findInString = isFound
    
End Function

【讨论】:

以上是关于Excel计算文本值中包含数字1的列数的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA判断单元格是不是包含某字符

分隔多个值数字(带字符)和文本

excel 中计算结果出现"#num!" ,单元格显示为特殊颜色

为Excel生成CSV文件,如何在值中包含换行符

EXCEL如何提取文字中包含的数字?

PostgreSQL:计算一行中包含值的列数