Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2020, 16:38   #1
lilpop
Пользователь
 
Регистрация: 06.09.2020
Сообщений: 17
По умолчанию Посчитать количество ТОЧЕК в ячейках

Всем здравствуйте!
Не могли бы подсказать, есть ли способ, с помощью которого можно посчитать количество ТОЧЕК в предложении в ячейках?
Например: в ячейке есть предложения, в нем есть 3 точки, тогда эта строчка копируется на Лист2 в столбец А
А если 4 точки, то строчка копируется на Лист2 в столбец В?
Заранее спасибо!
lilpop вне форума Ответить с цитированием
Старый 08.09.2020, 17:01   #2
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

пoпрoбуйте так:
Код:
Sub Tocky_Kolicestvo()
    For i = 5 To Cells(Rows.Count, "A").End(xlUp).Row
        Debug.Print Len(Cells(i, "A").Value) - Len(Replace(Cells(i, "A").Value, ".", ""))
    Next i
End Sub
Elixi вне форума Ответить с цитированием
Старый 08.09.2020, 17:26   #3
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

Код:
Sub Kopirujem()
    With Sheets(1)
        For i = 5 To .Cells(Rows.Count, "A").End(xlUp).Row
            TK = Len(.Cells(i, "A").Value) - Len(Replace(.Cells(i, "A").Value, ".", ""))
            
            Select Case TK
                Case Is = 3
                    Sheets(2).Cells(i, "A") = .Cells(i, "A").Value
                Case Is = 4
                    Sheets(2).Cells(i, "B") = .Cells(i, "A").Value
            End Select
        Next i
    End With
End Sub
Elixi вне форума Ответить с цитированием
Старый 08.09.2020, 17:28   #4
lilpop
Пользователь
 
Регистрация: 06.09.2020
Сообщений: 17
По умолчанию

Elixi,
код не идет, ничего не скопировал
lilpop вне форума Ответить с цитированием
Старый 08.09.2020, 17:30   #5
lilpop
Пользователь
 
Регистрация: 06.09.2020
Сообщений: 17
По умолчанию

lilpop,
второй код сработал!
заменила for i=5 на for i=1, т.к. строчки начинаются с 1.
Спасибо Вам!
lilpop вне форума Ответить с цитированием
Старый 08.09.2020, 20:44   #6
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

Цитата:
Сообщение от lilpop Посмотреть сообщение
код не идет, ничего не скопировал
первый код и не должен ничего копировать, он только считает точки по строкам,
итог выводит в окошко immediate в среде VBA

Цитата:
Сообщение от lilpop Посмотреть сообщение
заменила for i=5 на for i=1, т.к. строчки начинаются с 1
поменяйте в коде и названия листов, у меня там в коде не названия листов а их порядок в книге,
так что копировать будет всегда из первого листа в книге на второй лист
Elixi вне форума Ответить с цитированием
Старый 09.09.2020, 11:19   #7
lilpop
Пользователь
 
Регистрация: 06.09.2020
Сообщений: 17
По умолчанию

Elixi,
Спасибо за помощь!
а не знаете как добавить еще в этот код, чтобы значения вставлялись в следующую (после данных) пустую строку, чтобы макрос при копировании искал следующую пустую строку, а не перезаписывал старую?
попыталась сделать что-то типа этого и не получилось

Sub new()
Dim NextRow As Long
With Sheets(1)
For i = 5 To Sheets(1).Cells(Rows.Count, 26).End(xlUp).Row
NextRow = Sheets(2).Cells(Rows.Count, 9).End(xlUp).Row + 1

TK = Len(Sheets(1).Cells(i, 26).Value) - Len(Replace(Sheets(1).Cells(i, 26).Value, ",", ""))
Select Case TK
Case Is = 1
Sheets(2).Cells(NextRow, 2) = Sheets(1).Cells(i, 2).Value
End Select
Next i
End With
End Sub
lilpop вне форума Ответить с цитированием
Старый 09.09.2020, 12:46   #8
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

lilpop,
не знаю пoмoгу ли, ничегo в вашем кoде не менял, тoлькo дoбавил заметки
Код:
Sub new_()          ' здесь вы испoльыуете название, кoтoрoе рабoтать не будет, пoменяйте егo хoтя бы так
Dim NextRow As Long
    'With Sheets(1) ' вы написали кoд таким oбразoм, чтo эта кoнструкция здесь не требуется
    For i = 5 To Sheets(1).Cells(Rows.Count, 26).End(xlUp).Row
    ' ниже вы вычисляете пoследнюю стрoку пo стoлбцу №9,
    ' если в дальнейшем в этoт стoлбец данные записивать не будете
    ' в нoвoм прoхoде цикла будет вычислена та же стрoка чтo и в предыдущем
    NextRow = Sheets(2).Cells(Rows.Count, 9).End(xlUp).Row + 1
    
    TK = Len(Sheets(1).Cells(i, 26).Value) - Len(Replace(Sheets(1).Cells(i, 26).Value, ",", ""))
    Select Case TK
        Case Is = 1
        ' здесь данные записиваются в стoлбец №2
        Sheets(2).Cells(NextRow, 2) = Sheets(1).Cells(i, 2).Value
    End Select
    Next i
    'End With
End Sub
Elixi вне форума Ответить с цитированием
Старый 09.09.2020, 16:25   #9
lilpop
Пользователь
 
Регистрация: 06.09.2020
Сообщений: 17
По умолчанию

Elixi,
' ниже вы вычисляете пoследнюю стрoку пo стoлбцу №9,
' если в дальнейшем в этoт стoлбец данные записивать не будете

вот данные будут записываться в столбцы 1-10
и надо чтобы каждый раз новые значения вставлялись в пустую строку после всех данных
уже много раз переделывала код и не выходит, не понимаю в чем причина
lilpop вне форума Ответить с цитированием
Старый 09.09.2020, 22:40   #10
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

Цитата:
Сообщение от lilpop Посмотреть сообщение
уже много раз переделывала код и не выходит, не понимаю в чем причина
не знаю пользуетесь ли таким чтобы разобраться, пока нет попробуйте:
Код:
' после строки:
	NextRow = Sheets(2).Cells(Rows.Count, 9).End(xlUp).Row + 1
' напишите эти строки и запустите макрос:
	Debug.Print NextRow		' это в окошко immediate запишет № строки которую вы только что вычислили
	Stop				' это остановит макрос, чтобы вы могли посмотреть, та ли строка вычислена
' или, теперь можно посмотреть состояние переменных: наезжаете курсором мыши на название переменной и 
' возле курсора отображается её значение, т.е. даже не надо никаких Debug.Print-ов 
' если теперь нажать клавиш F8 выполнится следующая (одна) команда, так можно по шагам наблюдать что происходит
' если нажать F5 выполнятся все комнады (до следующего Stop, или до конца процедуры)
если не поможет, прикрепляйте файл, если он не секретный, лучше всего и с примером как должно получиться
Elixi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать суммы из одних ячеек, если в соответствующих ячейках определенное значение Нарилия Microsoft Office Excel 3 28.02.2018 18:03
Среди трех точек с координатами (x1,y1), (x2,y2), (x3,y3) определить количество точек, лежащих во второй четверти и вывести на экран их координаты. Viktoria_ Паскаль, Turbo Pascal, PascalABC.NET 3 20.02.2018 00:07
Как посчитать сумму в ячейках определенного цвета vitek090283 Microsoft Office Excel 4 10.10.2017 02:14
Задаnm n точек. Найти m=3,4... точек и построить на них m-угольник: количество точек , лежащих внутри и вне его мин. различается L.Rain Помощь студентам 0 11.12.2011 22:19
Определить количество точек Артур22 Общие вопросы Delphi 17 21.02.2011 11:09