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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2013, 15:56   #1
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
Лампочка Excel

Привет ! Прошу прощения за эту тему, дело в том что только начинаю изучать Excel, есть много вопросов. Можно я их буду задавать в этой теме?

Вот мой вопрос:
Как на VBA написать такой макрос:
Код:
       {
            for (№=0; № in numbs; №++)
            {
                if B (№).valie = B (№+1).value
                {
                    string (№+1).delate
                }
                next
            }
        }
Он будет убирать дубликаты. В Столбце B такие значения: "A3 1,9л. хэтчбек дизельный"

№ - номер строки
numbs - типа все строки
В - столбец

И как его правильно применить?
Спасибо!

Последний раз редактировалось dr.dimm; 25.12.2013 в 15:58.
dr.dimm вне форума Ответить с цитированием
Старый 25.12.2013, 16:25   #2
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

И этот код работал? Наверно надо отсортировать сначала и цикл с последней ячейки к первой.
kalbasiatka вне форума Ответить с цитированием
Старый 25.12.2013, 18:51   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

можно так
Код:
for n=numbs to 2 step-1
if cells(n,2).value =  cells(n-1,2).value then rows(n).delete
next
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.12.2013, 23:01   #4
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 123
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
можно так
Код:
for n=numbs to 2 step-1
if cells(n,2).value =  cells(n-1,2).value then rows(n).delete
next
а если одинаковые строки не соседние?
roborrr вне форума Ответить с цитированием
Старый 26.12.2013, 01:53   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от kalbasiatka Посмотреть сообщение
И этот код работал? Наверно надо отсортировать сначала и цикл с последней ячейки к первой.
Сортировать надо.
Вопрос стоял
Цитата:
Вот мой вопрос:
Как на VBA написать такой макрос:
Код:

{
for (№=0; № in numbs; №++)
{
if B (№).valie = B (№+1).value
{
string (№+1).delate
}
next
}
}
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 20.01.2014, 11:08   #6
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Подскажите пожалуйста, как сделать что бы если в TextBox1 вводили текст, вылетала ошибка. И что бы в TextBox1 при вводе числа с точкой в качестве разделителя дробной части, точка менялась на запятую?
Код:
Dim a As Double
If TextBox1.Value = "" Then
    MsgBox ("Error")
    Exit Sub
End If

a = TextBox1.Value
Dim b As Double
Dim c As Double
b = 2.3
c = a * b
MsgBox (c)
dr.dimm вне форума Ответить с цитированием
Старый 20.01.2014, 15:57   #7
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Простенько
Код:
Private Sub TextBox1_Change()
If Right(TextBox1, 1) = "," Then Exit Sub
If Right(TextBox1, 1) = "." Then
    TextBox1 = Replace(TextBox1, ".", ",", 1)
    Exit Sub
End If
If Not IsNumeric(TextBox1) Then
    MsgBox "Амигос! Подумай."
    TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End If
End Sub

Последний раз редактировалось kalbasiatka; 20.01.2014 в 16:39.
kalbasiatka вне форума Ответить с цитированием
Старый 23.01.2014, 10:59   #8
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Код:
Private Sub CommandButton1_Click()
Dim a
    If TextBox1.Value = "" Then
        MsgBox ("Пусто")
        Exit Sub
    End If
a = Replace(TextBox1.Value, ".", ",")
If Not IsNumeric(a) Then
    MsgBox "Амигос, подумай!"
    Exit Sub
End If
Dim b As Double
Dim c As Double
b = 2.3
c = a * b
MsgBox (c)
End Sub
Остановился на этом варианте.
dr.dimm вне форума Ответить с цитированием
Старый 23.01.2014, 13:14   #9
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

А как можно упростить эту простыню?
Код:
Private Sub Use()
    Dim Km As Double
    If ComboBox2.ListIndex = -1 Then Exit Sub
    Km = Val(ComboBox2.List(ComboBox2.ListIndex, 1))
End Sub
Private Sub UserForm_Initialize()
    ComboBox2.AddItem ("1 год 1 месяц")
    ComboBox2.List(12, 1) = 13 / 12
    ComboBox2.AddItem "1 год 2 месяца"
    ComboBox2.List(13, 1) = 14 / 12
    ComboBox2.AddItem "1 год 3 месяца"
    ComboBox2.List(14, 1) = 15 / 12
    ComboBox2.AddItem "1 год 4 месяца"
    ComboBox2.List(15, 1) = 16 / 12
    ComboBox2.AddItem "1 год 5 месяцев"
    ComboBox2.List(16, 1) = 17 / 12
    ComboBox2.AddItem "1 год 6 месяцев"
    ComboBox2.List(17, 1) = 18 / 12
    ComboBox2.AddItem "1 год 7 месяцев"
    ComboBox2.List(18, 1) = 19 / 12
    ComboBox2.AddItem "1 год 8 месяцев"
    ComboBox2.List(19, 1) = 20 / 12
    ComboBox2.AddItem "1 год 9 месяцев"
    ComboBox2.List(20, 1) = 21 / 12
    ComboBox2.AddItem "1 год 10 месяцев"
    ComboBox2.List(21, 1) = 22 / 12
    ComboBox2.AddItem "1 год 11 месяцев"
    ComboBox2.List(22, 1) = 23 / 12
    ComboBox2.AddItem "2 года"
    ComboBox2.List(23, 1) = 24 / 12
End Sub
dr.dimm вне форума Ответить с цитированием
Старый 23.01.2014, 13:46   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

можно так:
Код:
Private Sub UserForm_Initialize()
  Dim i As Long, m As Long
  For i = 13 To 24
    m = i Mod 12
    ComboBox2.AddItem = IIf(m = 0, "2 года", "1 год " & m & " месяц" & IIf(m = 1, "", IIf(m < 5, "a", "ев")))
    ComboBox2.List(i - 1, 1) = i / 12
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 23.01.2014 в 14:38.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключения к Excel исполбзуя ADO: разные версии файлов excel VVkSoft БД в Delphi 0 27.09.2012 00:34
Скорость исполнения макроса в Excel-2010 намного ниже, чем в Excel-2003 Павел+ Microsoft Office Excel 5 29.12.2010 03:28
Каким образом можно сделать таблицу Excel в ячейке Excel? Severny Microsoft Office Excel 3 08.10.2010 09:13
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
Формирование из excel в ASCII, у меня он формирует по одному клиенту а в Excel нескол Askat Общие вопросы Delphi 0 18.07.2007 06:28