Формула подсчета символов в ячейке? - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужна формула, которая подсчитывает общее количество символов в ячейке, а также подсчитывает, сколько раз встречается это количество символов.

Например, в столбце A:

Диапазониз 10 ячеек с 201, 202, 203, 204, 205, 1001, 1002, 1003, 1004, 1005.

Есть 5 ячеек с 3 символами и 5 ячеек с 4 символами.

Какой будет формула для этого?Не уверен, как высоко мне нужно будет рассчитывать количество символов в каждой ячейке для подсчета, но я надеюсь, что это будет легко изменить в формуле позже.

Ответы [ 4 ]

0 голосов
/ 07 декабря 2018

Версия массива символов ячейки

Option Explicit

Sub CellCharactersCount()

  Const cVntWsName As Variant = "Sheet1"    ' Worksheet Name or Index
  Const cStrFirstSource As String = "A1"    ' First Cell of Source Column
  Const cStrFirstTarget As String = "B1"    ' First Cell of Target Column

  Dim vntSource As Variant                  ' Source Array
  Dim vntLngTarget As Variant               ' Target Array (As Long)
  Dim lng1 As Long, lng2 As Long            ' Array Row Counters
  Dim lngMax As Long                        ' Maximum Characters

  ' Paste range into Source Array
  With ThisWorkbook.Worksheets(cVntWsName)
    vntSource = .Range(.Range(cStrFirstSource), .Cells(Rows.Count, _
        .Range(cStrFirstSource).Column).End(xlUp))
  End With

  ' Count the maximum number of chars.
  For lng1 = 1 To UBound(vntSource)
    If Len(vntSource(lng1, 1)) > lngMax Then
      lngMax = Len(vntSource(lng1, 1))
    End If
  Next

  ' Copy Len Data to Target Array.
  ReDim vntLngTarget(1 To lngMax, 1 To 1) As Long
  For lng1 = 1 To UBound(vntSource)
    If Len(vntSource(lng1, 1)) <> 0 Then
      For lng2 = 1 To lngMax
        If Len(vntSource(lng1, 1)) = lng2 Then
          vntLngTarget(lng2, 1) = vntLngTarget(lng2, 1) + 1
        End If
      Next
    End If
  Next

  With ThisWorkbook.Worksheets(cVntWsName)
    ' Clear contents of Target Column Range.
    .Range(cStrFirstTarget) _
        .Resize(Rows.Count - .Range(cStrFirstTarget).Row + 1).ClearContents
    ' Paste Target Array into Target Range.
    .Range(cStrFirstTarget).Resize(lngMax) = vntLngTarget
  End With

End Sub
0 голосов
/ 07 декабря 2018

С данными в столбце A , в B1 введите:

=SUMPRODUCT(--(LEN(A:A)=ROW()))

и скопируйте вниз:

enter image description here

0 голосов
/ 07 декабря 2018

Добавьте вспомогательный столбец с формулой =len(A1) и скопируйте его для столбца A. Затем вы можете получить список различных значений 3,4,5 ... и countif(B:B,C1), и это даст вам счетзначения длиной 3. enter image description here

0 голосов
/ 07 декабря 2018

Для количества символов используйте другой столбец с =len(cell).

Затем создайте динамическую таблицу, в которую вы поместите столбец len с левой стороны таблицы, а столбец len снова посередине.Убедитесь, что в таблице написано «count of len» или что-то очень похожее на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...