Старый 23.01.2006, 19:07   #1   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
help-vba

Очень нужна помощь. Если такие темы запрещены на Вашем форуме заране извиняюсь. Нужно написать макрос под exel. макрос должен открывать два документа exel и сравнивать их. В документах столбцы строк. В конце должен быть вывод слов второго документа которые были в первом с номерами которые соответствовали этим словам в первом документе.
на код я не рассчитываю, протсо подскажите общий вектор в котором мне надо искать решение....
  Ответить с цитированием
Старый 24.01.2006, 07:33   #2   
Форумец
 
Аватар для Ray79
 
Сообщений: 831
Регистрация: 04.08.2005

Ray79 вне форума Не в сети
Начинаешь запись макроса. Делаешь все действия вручную. Останавливаешь макрос. Внимательно изучаешь код. Пишешь похожее и радуешься. Вроде все
  Ответить с цитированием
Старый 24.01.2006, 11:56   #3   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
кстати очень трезво. спасибо
  Ответить с цитированием
Старый 24.01.2006, 12:32   #4   
Форумец
 
Аватар для Ray79
 
Сообщений: 831
Регистрация: 04.08.2005

Ray79 вне форума Не в сети
Дык пожалста
  Ответить с цитированием
Старый 24.01.2006, 16:23   #5   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
я все равно слишком тупой все равно не работает...
вот что я сваял пока....
есть три колонки B,D,E.
Нужно что бы черз цикл сравнивались все d c b и "истина/ложь" записывалась бы в e... но у меня ничего не работает....
Цитата:
Dim y As Integer
Dim y2 As Integer
Dim cellName As String
Dim cellName2 As String
Dim cellName3 As String


y = Range("b1").CurrentRegion.Rows.Count
y2 = Range("d1").CurrentRegion.Rows.Count
For i = 1 To y2

For j = 1 To y
cellName = "D_" & y2
cellName2 = "B_" & y
cellName3 = "E_" & y

Range([cellName3]).FormulaLocal = "=СОВПАД([cellName];[cellname2])"



Next
Next
  Ответить с цитированием
Старый 25.01.2006, 00:31   #6   
Кэп Улитка
 
Аватар для Yandex
 
Сообщений: 8,067
Регистрация: 04.05.2005
Возраст: 43

Yandex вне форума Не в сети
Вообщем не совсем понял че те надо.
Ниже код - открывает две книги - Книга1 и Книга2
Потом просматривает строки Книги2, если эта строка есть в книге один, то ее вписывает в вывод + номер ее строки в книге1

Цитата:
Sub MySub()
CurrentRow = 1

' Открываем книги
Workbooks.Open "C:\Книга1.xls"
Workbooks.Open "C:\Книга2.xls"

' Мчимся по строкам второй книги
' i - номер строки, strS2 - содержит значение ячейки Ai в книге2
For i = 1 To 1024
StrS2 = Workbooks("Книга2.xls").Sheets(1).Range("A" & i).Value

' Смотрим есть ли такая строка в Книге1
' Для этого пробегаем все строки в Книге1
For j = 1 To 1024
strS1 = Workbooks("Книга1.xls").Sheets(1).Range("A" & j).Value

' Если строки совпали, то помещаем ее и номер строки
' из первой книги в выходной фаил, столбцы A и B соответсвенно
If (strS1 = StrS2) Then
ThisWorkbook.Sheets(1).Range("A" & CurrentRow) = strS1
ThisWorkbook.Sheets(1).Range("B" & CurrentRow) = i
CurrentRow = CurrentRow + 1
End If
Next
Next

End Sub
  Ответить с цитированием
Старый 05.02.2006, 16:27   #7   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
спасибо. у меня возникли еще две маленькие проблемы
1.
нужно проверить каждое слово входит ли оно в словарь. Например "дом" входи а "абырвалг" входить не будет о чем выводяться собщения. Но вся беда в том что на английские слова это не рапространяеться.
и "hello" не будт найдено и "house" любое английское слово - не распознаеться. как сделать так что бы нижеприведенная функция распространялась и на английские слова..

Private Sub orph_Click()
Dim wrd As String
wrd = "дом"
If Application.CheckSpelling(wrd) Then
MsgBox "slovo '" & wrd & "' naideno"
Else
MsgBox "slovo '" & wrd & "' ne naideno"
End If



End Sub



2.Нужно что бы все буквы приобразовывались в нижний регистр.
вытащил из книги вот такой кусок кода. но как его использовать не догоню. и на кнопку вешаю формы и на кнопку экселевскую. ничего не выходит.


Private Sub ActiveSheet_Change(ByVal Target As Range)
MsgBox "!!!!!"
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("B1:B100")) Is Nothing Then

Target.Value = UCase(Target.Value)
End If
Application.EnableEvents = True

End Sub


п.с.изучаю vba 10 дней.... люди добрые помогите кто чем сможет сами мы не местные
  Ответить с цитированием
Старый 06.02.2006, 21:05   #8   
Кэп Улитка
 
Аватар для Yandex
 
Сообщений: 8,067
Регистрация: 04.05.2005
Возраст: 43

Yandex вне форума Не в сети
> vba 10 дней
Подождем еще немного )))
  Ответить с цитированием
Старый 06.02.2006, 21:36   #9   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
Цитата:
Сообщение от Yandex
> vba 10 дней
Подождем еще немного )))
низя ждать. сессия уже кончиласи
  Ответить с цитированием
Старый 06.02.2006, 23:16   #10   
Кэп Улитка
 
Аватар для Yandex
 
Сообщений: 8,067
Регистрация: 04.05.2005
Возраст: 43

Yandex вне форума Не в сети
Да че волнуешься? Через год новая начнется, или через два (если в армию сходишь), хе-хе.

И вообще учись формулировать задачи - я опять не понял че те надо. Правильно сформулированная задача - это уже половина решения
  Ответить с цитированием
Старый 02.03.2006, 15:47   #11   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
моя программа находится на звершающем этапе но возникла одна проблема
я использую для сравнения следующий цикл
Цитата:
For i = 1 To dnumber

Range("G3").Value = i
cell = "D" & i
iii = 0
For j = 1 To bnumber
iii = iii + 1
cell2 = "B" & j
If Not Range([cell]).Value = Empty And Range([cell]).Value = Range([cell2]).Value Then

CellName = "F" & ii
CellName2 = "E" & ii
Range([CellName]).Value = Range([cell]).Value
ii = ii + 1
Range([CellName2]).Value = iii
End If
Next
Next
т.е. есть три столбца слова второго находятся в первом и помещаются в третий.
проблема в том что если используются более 1000 слов для столбцов (2-3 тысячи) то цикл работает ОЧЕНЬ медленно. :wall: пожалуйста подскажите с чем это может быть связано.... :wacko:
  Ответить с цитированием
Старый 07.03.2006, 18:13   #12   
Форумец
 
Аватар для Ryan
 
Сообщений: 217
Регистрация: 21.08.2005
Возраст: 45

Ryan вне форума Не в сети
[QUOTE если используются более 1000 слов для столбцов (2-3 тысячи) то цикл работает ОЧЕНЬ медленно.[/QUOTE]

ну что тут можно посоветовать..... Пожалуй рецепт лишь один - надо добиваться снижения "накладных расходов" на этапе выполнения макроса. Проще говоря - надо заниматься оптимизацией ваших шедевров в плане производительности... Один из самых прогрессивных методов - это использование по-максимуму уже и так имеющихся средств VBA. Надо юзать функции и методы, имеющие максимальную производительность. Те, которые в своих вызовах используют БИБЛИОТЕКИ EXCEL..... Те, которые НАПРЯМУЮ (правду говорю!) обращаются к контенту записей листа книги excel... Что впрочем говорить, если у многих возникнет желание - я дам совет и пример по использованию VBA.
  Ответить с цитированием
Старый 07.03.2006, 18:20   #13   
Форумец
 
Аватар для Ryan
 
Сообщений: 217
Регистрация: 21.08.2005
Возраст: 45

Ryan вне форума Не в сети
Цитата:
Нужно что бы все буквы приобразовывались в нижний регистр.
[/SIZE]
Ну так юзай одну из финкций VBA по преобразованию строки в нижний регистр.... и делов-то.
  Ответить с цитированием
Старый 07.03.2006, 18:21   #14   
Форумец
 
Аватар для Ryan
 
Сообщений: 217
Регистрация: 21.08.2005
Возраст: 45

Ryan вне форума Не в сети
Цитата:
Сообщение от eagleheart
моя программа находится на звершающем этапе
На самом деле я НЕ ПОНЯЛ что нужно сделать и в цем заключается ЦЕЛЬ этой программы...
  Ответить с цитированием
Старый 07.03.2006, 18:26   #15   
Форумец
 
Аватар для Ryan
 
Сообщений: 217
Регистрация: 21.08.2005
Возраст: 45

Ryan вне форума Не в сети
А вообще интересный вопрос у меня возник. А для ЧЕГО современному избалованному юзеру понадобилась ковыряться в скриптовых языках ???

плиз дайте обоснованный ответ.
  Ответить с цитированием
Старый 20.05.2006, 21:09   #16   
Форумец
 
Сообщений: 12
Регистрация: 23.01.2006

eagleheart вне форума Не в сети
yandex к сожалению для тебя все сдал


Ryan, спасибо тебе но экзамен был сдан в аккурат за день до твоих постов.

Цитата:
А для ЧЕГО современному избалованному юзеру понадобилась ковыряться в скриптовых языках ???
так это было мое семестровое задание

вот тут выложил техничекое задание и описание контрольного примера
http://slil.ru/22767875
там подробно описано что я делал и есть код.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind