Как подсчитать количество строк в ячейку с помощью VBA

Sub Test()    
    Dim countMe As Integer    
    countMe = Sheets("Data").Range("B1").Formula = "=LEN(SUBSTITUTE(B1,""|"",""""))"
    Sheets("Data").Range("C1").Value = countMe    
End Sub

что не так с логикой в этом коде?


Значение C1 равно 0, если оно должно быть 1. В ячейке B1 у меня Test|Test

7
задан nixda
18.05.2023 2:05 Количество просмотров материала 2709
Распечатать страницу

3 ответа

Sub Test()

Dim countMe As Integer

  countMe = LEN(SUBSTITUTE(B1,""|"",""""))
  Sheets("Data").Range("C1").Value = countMe

End Sub

C1 должно быть равно 8

2
отвечен wbeard52 2023-05-19 09:53

строка countMe не может иметь двух равных знаков, иначе вы по существу спрашиваете Excel, равна ли формула В B1 "=LEN (SUBSTITUTE(B1,""|"",""""))", а это не так, так что это returnig zero. Вы можете увидеть это, изменив тип данных countMe на Variant, и по умолчанию он будет Boolean, и вы получите FALSE вместо нуля.

это все равно, что сказать:

countMe = 1 = 0

, что всегда будет приводить к 0, потому что 1 <> 0.

вы пытаетесь использовать формулы приложения в виде функций VBA. Правильное использование LEN () было бы:

countMe = LEN(Range("B1"))

но для вашей проблемы подсчета количества труб В B1 используйте код из этого другого сообщения: как найти число вхождений слеш из строки

2
отвечен StartupSpreadsheets 2023-05-19 12:10

2 способа подсчета вхождений " | "в строку" Test / Test":

.

1 - Формула

Sub Test1()
    Dim countMe As Long

    With Sheets("Data")

        .Range("C1").Formula = "=LEN(B1)-LEN(SUBSTITUTE(B1,""|"",""""))"    'your formula

        countMe = .Range("C1").Value2   'count will be "1"

        .Range("D1").Value = countMe

    End With
End Sub

.

2-VBA

Sub Test2()
    Dim countMe As Long

    With Sheets("Data")

        .Range("E1").Value2 = UBound(Split(.Range("B1").Value2, "|"))

        countMe = .Range("F1").Value2   'count will be "1"

        .Range("F1").Value2 = countMe

    End With
End Sub

.

подробнее о Первый здесь

2
отвечен paul bica 2023-05-19 14:27

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх