Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Что то затупил я с этим Ехелем.  (Прочитано 10702 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shaggy Fish
Гость
« : 13-07-2004 23:29 » new

Что то затупил я  с этим Ехелем.
 Молчу Задача.
Есть постоянная колонка {А300} данных в ней 300 ячеек с ****** знаками
и
имеется колонка {B*} в которую я вставляю некое количество ячеек с такими же ****** знаками, но их меньше или равно количеству в колонке (А).
Если количество равное - ОК!
Если разное, то эту разницу вывести в колонку (С*)
И все!
Знатоки помогите!  Вот такой я вот
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 14-07-2004 06:12 » 

по тех заданию не совсем ясно всё, но думаю это поможет:

пусть в столбцах A и B(неважно какой длины) есть непустые ячейки, идущие друг за другом без перерывов

после выполнения данной процедуры в столбце C - разность длин столбцов
Код:
A     B    C
1     2    4
1     2
1     2
1     2
1     2
1    
1    
1    
1    

Код:
Sub A_B_C()
     Dim N, Na, Nb As Integer
     With Лист1
          'считаем количество непустых ячеек в столбце A
          Na = 0
          While (.Cells(Na + 1, 1))
               Na = Na + 1
          Wend
       
          'считаем количество непустых ячеек в столбце B
          Nb = 0
          While (.Cells(Nb + 1, 2))
               Nb = Nb + 1
          Wend
       
          .Cells(1, 3) = Na - Nb
          End With
End Sub
« Последнее редактирование: 30-11-2007 20:16 от Алексей1153++ » Записан

Anonymous
Гость
« Ответ #2 : 14-07-2004 10:42 » 

примеру есть список телефонов в колонке А постоянный и в колонке В изменяемый
Задача в колонке (С), получить список телефонов отсутствующий в колонке (В)
Можно так объяснить.
Есть две колонки (А1;A300) и (В1; ) < or =300
мне нужно убрать одинаковые значения из колонок.
И остается список значений, которых нет в колонке (В)
A    B    C
1    2     1
2    3     4
3    6     5
4    7     9
5    8     10
6           11
7           12
8
9
10
11
12

Вот!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 14-07-2004 11:57 » 

Улыбаюсь так бы и сказал

щас сообразим


(длина столбцов считается автоматом)
но - работает только для цифр, я не знаю как достать содержимое ячейки в виде строки
Код:
Private Sub A_B_C()
    Dim N, Na, ia, Nb, ib, Nc As Integer
    Dim flag As Boolean
    With Лист1
        'считаем непустых ячеек в столбце A
        Na = 0
        While (.Cells(Na + 1, 1))
            Na = Na + 1
        Wend
        'считаем непустых ячеек в столбце B
        Nb = 0
        While (.Cells(Nb + 1, 2))
            Nb = Nb + 1
        Wend
        'Na,Nb - длина столбцов
       
        Nc = 0 '
       
        'перебираем все элементы столбца A
        For ia = 1 To Na
            'проверяем - есть ли элемент в столбце B
            flag = True
            For ib = 1 To Nb
                'проверяем на совпадение
                If .Cells(ia, 1) = .Cells(ib, 2) Then
                ib = Nb
                flag = False 'совпал - обламываем
                End If
            Next ib
           
            'проверяем надо ли добавить в столбэц C
            If flag Then
                Nc = Nc + 1
                .Cells(Nc, 3) = .Cells(ia, 1)
            End If
        Next ia
    End With
    'Nc - длина столбца C
End Sub
« Последнее редактирование: 30-11-2007 20:17 от Алексей1153++ » Записан

Shaggy Fish
Гость
« Ответ #4 : 14-07-2004 21:34 » 

Обьясните бестолковому как вставить этот код. Истыкался уже... :oops:
Не знаю я VBA совсем  Так больше нельзя...
А хелп меня просто уничтожил, морально....
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 15-07-2004 08:28 » 

1) нажми Alt+F8
2) набери имя макроса - например "ABC"
3) между

Sub ABC()

End Sub

сопируй код - начиная со строки
   Dim N, Na, ia, Nb, ib, Nc As Integer
и заканчивая
  'Nc - длина столбца C

4) Alt+Tab - переходи в ексель
5) RMB по панели инструментов->настройка->вкладка Команды->окошко Категории->пункт Макросы-> в правом окошке - настраиваемая кнопка (по умолчанию там глупая жёлтая рожа)
перетаскивай рожу на одну из панелей тулов - хоть на главное меню
и закрывай окно Настройка
6) LMB по "роже" - и выбери имя макроса, ОК

теперь эта кнопка - будет запускать программу
Записан

Anonymous
Гость
« Ответ #6 : 15-07-2004 11:45 » 

Вот ! Эток код работает ! Я шокирован!
Большое Всем спасибо за помощь! Отлично   :new_twist:

Код:
Sub xz()
Dim rA, rB, rC
Set rA = Range("A1:A12")
Set rB = Range("B1:B7")
cc = 1
 
For Each a In rA
fnd = 0
 
    With rB
        Set c = .Find(a, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            fnd = 1
        End If
    End With
    If fnd = 0 Then
        Cells(cc, 3) = a.Text
        cc = cc + 1
    End If
Next a
End Sub
Range("A1:A12") и Range("B1:B7")  заменить на реальные
« Последнее редактирование: 30-11-2007 20:19 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines