0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
1
Excel

Макрос подсчета количества одинаковых значений из двух книг

14.09.2018, 13:06. Показов 4782. Ответов 10

Author24 — интернет-сервис помощи студентам
Подскажите, как правильно написать код поиска из двух таблиц, необходимо из столбца В взять индекс и вычислить количество повторяющихся значений данного индекса в другой таблице, в столбце Т и данное значение проставить в первой таблице в столбце С.



Приблизительно набросал код, но результат отрицательный

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
     Dim i_BEL As Long
        Dim x_BEL As Excel.Range
        Dim resultatBEL, resultatBEL2 As Integer
 
    With objXslx.Worksheets("exportSD").Range("T:T")
        For i_BEL = 1 To .Cells(.Rows.Count).End(xlUp).Row
          Set x_BEL = Worksheets("Лист1").Range("B10:B54").Find(.Cells(i_BEL), LookIn:=xlValues, LookAt:=xlWhole)
 
            If Not x_BEL Is Nothing Then
 
'                 resultatBEL = resultatBEL + 1
'
'                    Worksheets("Лист1").Cells(1, 8).Value = resultatBEL
 
                    Worksheets("Лист1").Cells().Value = ObjExcel.Application.WorksheetFunction.CountIf(ObjExcel.Range("T:T"), x_BEL)
 
 
              '  Worksheets("Лист1").Cells(i_BEL, 9) = resultatBEL
 
 
                End If
 
            Next i_BEL
 
    End With
Миниатюры
Макрос подсчета количества одинаковых значений из двух книг  
0
14.09.2018, 13:06
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2018, 13:06
Ответы с готовыми решениями:

Запрос для подсчета количества идущих подряд одинаковых значений
Здравствуйте, есть в таблице столбец, например: 1 2 1 1 1 1 3 3 1

Записал небольшой макрос для подсчета значений, как вывести сообщение с расчетом значений?
Здравствуйте, снова появилась идейка для быстродействия, записал макрос, он работает, сортирует как надо, но как прикрутить вывод сообщения...

Макрос для подсчета количества необходимых элементов таблицы
Доброго времени суток! Когда-то давно в университете учили писать макросы, думал что не пригодится... Столкнулся с такой проблемой, что...

10
6991 / 2890 / 554
Регистрация: 19.10.2012
Сообщений: 8,789
14.09.2018, 15:29 2
СЧЁТЕСЛИ() не срабатывает?
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
14.09.2018, 15:32  [ТС] 3
Срабатывает, но нужно именно через VBA
0
6991 / 2890 / 554
Регистрация: 19.10.2012
Сообщений: 8,789
14.09.2018, 15:34 4
Так запишите в макрос весь процесс, делов то...
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
14.09.2018, 15:41  [ТС] 5
Я попробовал.

Visual Basic
1
ActiveCell.FormulaR1C1 = "=COUNTIF([12.xlsx]exportSD!C20,RC[-1])"
- это при записи макроса выходит. Я не знаю как обезличить наименование файла.
0
6991 / 2890 / 554
Регистрация: 19.10.2012
Сообщений: 8,789
14.09.2018, 16:32 6
Visual Basic
1
ActiveCell.FormulaR1C1 = "=COUNTIF([" & objXslx.name & "]exportSD!C20,RC[-1])"
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
17.09.2018, 08:13  [ТС] 7
Сделал как вы написали, но почему то не работает. Я думаю из-за того, что прописывается полный путь к файлу. Подскажи, как можно сократить?
Миниатюры
Макрос подсчета количества одинаковых значений из двух книг  
0
6991 / 2890 / 554
Регистрация: 19.10.2012
Сообщений: 8,789
17.09.2018, 08:18 8
Я вижу что прописывается 12.xlsx, откуда берётся остальное - Вам виднее.
Да и не должен полный путь мешать - если книга закрыта, то он и нужен, только синтаксис вероятно чуть другой будет, хотя на память не помню...
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
17.09.2018, 08:20  [ТС] 9
При нажатии Собрать данные, я выбираю файл 12.xlsx, и получается, что вот так встает формула, а если я просто открою файл, формула встает нормально.
0
6991 / 2890 / 554
Регистрация: 19.10.2012
Сообщений: 8,789
17.09.2018, 08:22 10
Это вопрос к автору всего макроса
0
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 6
17.09.2018, 11:05  [ТС] 11
Сделал так.

Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim p As Long, Countid As Long
    
    For p = 10 To 54
    
    Worksheets("Лист1").Cells(p, 3).Select
    Countid = ObjExcel.Application.WorksheetFunction.CountIf(ObjExcel.Range("T:T"), Cells(p, 2).Value)
    ActiveCell.Value = Countid
    
    
    Next p
0
17.09.2018, 11:05
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2018, 11:05
Помогаю со студенческими работами здесь

Составить программу для подсчета наибольшего количества одинаковых элементов
Составить программу для подсчета набольшего количества одинаковых элементов, размещенных последовательно, в массиве для каждого одномерного...

Макрос для подсчета сумм для данных из разных книг
Итак, имеются исходные данные находящиеся в различных многостраничных книгах .xls (табличные значения). Необходимо в выходном файле...

Написать программу для подсчета количества одинаковых цифр в массиве из 5-ти элементов
Только начал разбиратся в массивах. Помогите решыть. Написать программу для подсчета количества одинаковых цифр в массиве из 5-ти...

Макрос для подсчета суммы всех значений столбца
Есть таблица Word. В одном столбце стоят суммы. Как написать макрос, чтобы в конце таблицы, после ИТОГО:, была подсчитана сумма...

Использование функций для подсчета количества значений
есть некая таблица с кодами открытых/закрытых предприятий как мне подсчитать количество предприятий открытых. применила функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru