Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> макрос, EXEL, Макрос для совпадающих значений 
:(
    Опции темы
Алер
Дата 27.11.2004, 20:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Уважаемые многопытные пользователи.
Задача: через макрос в существующем столбце выделить цветом совпадающие значения и просуммиовать их.

Заранее благодарен за помощь.
  Вверх
Enflout
Дата 27.11.2004, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Сделай так:
Сервис - Макрос - Начать запись
Далее делаешь все что тебе надо и останавливаешь процесс записи.
Сервис - Макрос - Макросы
Смотришь исходник своего макроса
Все smile
PM MAIL   Вверх
Guest
Дата 27.11.2004, 20:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Templar @ 27.11.2004, 20:34)
Сделай так:
Сервис - Макрос - Начать запись
Далее делаешь все что тебе надо и останавливаешь процесс записи.
Сервис - Макрос - Макросы
Смотришь исходник своего макроса
Все smile

Да, но там будут конкретные ячейки, а мне нужно для всех...
  Вверх
Enflout
Дата 27.11.2004, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Цитата(Guest @ 27.11.2004, 20:36)
Да, но там будут конкретные ячейки, а мне нужно для всех...

Во-первых не во всех, а всего лишь в конкретном столбце по условию вопроса.
Во-вторых, если ты сделаешь щелчок на название столбца, выделятся все ячейки этого столбца.
smile
Добавлено @ 20:44
Выделяем столбец C:
Columns("C:C").Select
PM MAIL   Вверх
Guest
Дата 27.11.2004, 20:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Templar @ 27.11.2004, 20:40)
Во-первых не во всех, а всего лишь в конкретном столбце по условию вопроса.
Во-вторых, если ты сделаешь щелчок на название столбца, выделятся все ячейки этого столбца.
smile
Добавлено @ 20:44
Выделяем столбец C:
Columns("C:C").Select

Что-то я не совсем понял. Весь столбик-то можно выделить, а как в нем найти повторяющиеся значения? Там есть и уникальные значения.
  Вверх
Enflout
Дата 27.11.2004, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Ладно не заморачивайся, есть способ попроще имхо.
Поясню принцип:
Притсуждаешь переменной номер первой ячейки столбца и запоминаешь это значение. Далее прогоняешь цикл на соответствие значений этой ячейки и всех остальных в этом столбце и так до последней ячейки(увеличивая номер ячейки).
Это очень долго и противно, но зато полегче, чем предыдущий способ.
Добавлено @ 21:06
Сравнение:
If Range(a) = Range(b) Then Range© = Range(a) + Range(b)
a, b, c - номера соответсвенных ячеек.
PM MAIL   Вверх
Алер
Дата 28.11.2004, 09:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Templar @ 27.11.2004, 21:04)
Ладно не заморачивайся, есть способ попроще имхо.
Поясню принцип:
Притсуждаешь переменной номер первой ячейки столбца и запоминаешь это значение. Далее прогоняешь цикл на соответствие значений этой ячейки и всех остальных в этом столбце и так до последней ячейки(увеличивая номер ячейки).
Это очень долго и противно, но зато полегче, чем предыдущий способ.
Добавлено @ 21:06
Сравнение:
If Range(a) = Range(b) Then Range© = Range(a) + Range(b)
a, b, c - номера соответсвенных ячеек.

Да уж наверное придется делать так...,но это почти ручной способ
  Вверх
Staruha
Дата 28.11.2004, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 2
Всего: 27



Не придется ,от ныне и во веки веков!
Код

Private Sub CommandButton1_Click()
d = Лист1.UsedRange.Rows.Count
c = UsedRange.Rows.Count
For rwIndex = 1 To d
For rwIn = 1 To c
Range("D" & rwIndex).Value = Range("A" & rwIn).Value

If Range("A" & rwIndex).Value = Range("D" & rwIndex).Value Then

Range("C" & rwIndex).Value = Range("C" & rwIndex).Value + Range("B" & rwIn).Value

End If
Next rwIn
Range("D" & rwIndex).Value = ""
Next rwIndex

End Sub


С цветом вот тоько не успела.Пока не соображу как.Может кто
подскажет.
Row(rwIndex).Interior.ColorIndex = 3- красит все подряд.

Это сообщение отредактировал(а) cardinal - 29.11.2004, 01:19


--------------------
Возмездие настигнет
PM MAIL   Вверх
Jureth
Дата 29.11.2004, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 23.11.2004
Где: где-то в Западной Сибири

Репутация: нет
Всего: 3



Может я чего недоглядел, но у меня получилось так:
Код
Sub search()
   Dim Count%, b%, F As Boolean
   Columns(1).Interior.ColorIndex = xlNone 'убираем цвета
   Columns(2).Clear 'Очищаем столбец сумм
   Count = UsedRange.Rows.Count 'Взято из предыдущего сообщения
   b = 0
   For i = 1 To Count - 1
       F = True
       'раз просили покрасить, то по цвету мы и будем смотреть - проверяли уже эту ячейку или нет
       If Cells(i, 1).Interior.Color <> vbRed Then
           For j = i + 1 To Count
               If Cells(i, 1).Value = Cells(j, 1).Value Then
                   'красим...
                   Cells(i, 1).Interior.Color = vbRed
                   Cells(j, 1).Interior.Color = vbRed
                   'если это первое совпадение данных чисел
                   If F Then
                       b = b + 1
                       Cells(b, 2).Value = Cells(i, 1).Value + Cells(j, 1).Value
                       F = Not F
                   Else 'если нет
                       Cells(b, 2).Value = Cells(b, 2).Value + Cells(j, 1).Value
                   End If
               End If
           Next j
       End If
   Next i
End Sub
программа ищет значения в первом столбце, суммы выводит во втором.

Это сообщение отредактировал(а) Jureth - 29.11.2004, 07:41
PM   Вверх
Guest
Дата 29.11.2004, 09:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Jureth @ 29.11.2004, 07:40)
   Count = UsedRange.Rows.Count 'Взято из предыдущего сообщения

Ругается run-time error '424'
  Вверх
Staruha
Дата 29.11.2004, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 2
Всего: 27



Все получилось!Закрасила как просил
Private Sub CommandButton1_Click()
d = UsedRange.Rows.Count
c = UsedRange.Rows.Count
For rwIndex = 1 To d
For rwIn = 1 To c
Range("D" & rwIndex).Value = Range("A" & rwIn).Value

If Range("A" & rwIndex).Value = Range("D" & rwIndex).Value Then

Range("C" & rwIndex).Value = Range("C" & rwIndex).Value + Range("B" & rwIn).Value

End If
If Range("A" & rwIndex).Value = Range("A" & rwIn).Value Then
k = 1

Else
k = k + 1

End If
Rows(rwIndex).Interior.ColorIndex = k
Next rwIn
Range("D" & rwIndex).Value = ""
Next rwIndex

End Sub
Извиняюсь за оформление ,но у меня что то с настройками



--------------------
Возмездие настигнет
PM MAIL   Вверх
Guest
Дата 29.11.2004, 10:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











еще бы знать как пользоватся, а то при запуске ругается Ругается run-time error '424' на строчку d = UsedRange.Rows.Count
  Вверх
Гость_Старуха
Дата 29.11.2004, 11:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня не ругается.Попробуй обьявить переменную As Integer d, c ,k
  Вверх
Алер
Дата 29.11.2004, 13:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Дело в том, что я совсем уж начинающий и поэтому для меня не все понятно.
Там наверное вначале должно быть имя макроса, типа Sub Макрос1().....End Sub, если ставлю непонимает Private Sub CommandButton1_Click().
А какова технология применения данного макроса? Нужно ли указыватьявно номер столбца?



  Вверх
Гость_Старуха
Дата 29.11.2004, 13:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Открываешь лист нажимаешь правую кнопку мышки,выберешь VB и Элементы управления.
С Э\управления стащишь кнопку,хлопнешь по ней два раза и вставляй код. И еще с цветом поэксперементируй вот так -

Rows(rwIndex).Interior.ColorIndex = k + 1 + "14

А вообще тебе ко мне на сайт надо зайти. Я когда училась ,так сама себе экзамены здавала.Там для чайников в самый раз.Сайт бесплатный.
Переменные не забудь обьявить

  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.