powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / help-vba
10 сообщений из 10, страница 1 из 1
help-vba
    #33498347
eagleheart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень нужна помощь. Если такие темы запрещены на Вашем форуме заране извиняюсь. Нужно написать макрос под exel. макрос должен открывать два документа exel и сравнивать их. В документах столбцы строк. В конце должен быть вывод слов второго документа которые были в первом с номерами которые соответствовали этим словам в первом документе.
на код я не рассчитываю, протсо подскажите общий вектор в котором мне надо искать решение....
...
Рейтинг: 0 / 0
help-vba
    #33498794
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот здесь посмотрите
...
Рейтинг: 0 / 0
help-vba
    #33500477
eagleheart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо. почитал. вот что получилось
есть три колонки B,D,E.
Нужно что бы черз цикл сравнивались все d c b и "истина/ложь" записывалась бы в e... но у меня ничего не работает.... :(
[QUOTE]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[/QUOTE]
...
Рейтинг: 0 / 0
help-vba
    #33501370
Попробуй.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Dim lngB As Long
    Dim lngD As Long
    Dim lngI As Long
    Dim lngJ As Long
    Dim blnFlag As Boolean
    
    lngB = Range("B1").CurrentRegion.Rows.Count
    lngD = Range("D1").CurrentRegion.Rows.Count
    
    For lngI =  1  To lngD
        blnFlag = False
        For lngJ =  1  To lngB
            If Range("D" & lngI) = Range("B" & lngJ) Then
                blnFlag = True
                Exit For
            End If
        Next lngJ
        If blnFlag Then
            Range("E" & lngI) = "Есть совпадения"
        Else
            Range("E" & lngI) = "Нет"
        End If
    Next lngI

Рузультат.

Код: plaintext
1.
2.
3.
4.
5.
    B      C      D           E
-------------------------------------------
1   f		f	Есть совпадения
2   d		f	Есть совпадения
3   g		g	Есть совпадения
4		h	Нет
...
Рейтинг: 0 / 0
help-vba
    #33524338
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 дней.... люди добрые помогите кто чем сможет сами мы не местные
...
Рейтинг: 0 / 0
help-vba
    #33527021
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Application.CheckSpelling() работает с текущим словарем проверки орфографии.
Можно попробовать переключать словари, вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
wrd="abraкадабра"
If Application.CheckSpelling(wrd) Then
 msgbox("Русское")
else
 OldLang=Application.SpellingOptions.DictLang
 Application.SpellingOptions.DictLang =  1033 
 If Application.CheckSpelling(wrd) Then
  msgbox("Английское")
 else
  msgbox("Нету такого слова!")
 endif
 Application.SpellingOptions.DictLang = OldLang
endif

2) По-моему, нижний регистр - это LCase(), и еще вопрос, сможет ли эта ф-я преобразовать сразу целый диапазон...
...
Рейтинг: 0 / 0
help-vba
    #33577689
eagleheart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
моя программа находится на звершающем этапе но возникла одна проблема
я использую для сравнения следующий цикл
[QUOTE]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[/QUOTE]
т.е. есть три столбца слова второго находятся в первом и помещаются в третий.
проблема в том что если используются более 1000 слов для столбцов (2-3 тысячи) то цикл работает ОЧЕНЬ медленно. :wall: пожалуйста подскажите с чем это может быть связано.... :wacko:
...
Рейтинг: 0 / 0
help-vba
    #33578050
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, зачем использовать Cell= "D" & i, Range([cell]).Value ?
Есть же Cells(i,j).Value
...
Рейтинг: 0 / 0
help-vba
    #33578130
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-вторых:
Проставляем в столбце E номера строк для слов D=B:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
For i =  1  To dnumber
    For j =  1  To bnumber
        If Cells(i,  4 ).Value = Cells(j,  2 ).Value Then
            Cells(i,  5 ).Value = j
            Exit For
        End If
    Next
Next
Или так - строим новый список с номерами и словами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ecount =  1 
For i =  1  To dnumber
    For j =  1  To bnumber
        If Cells(i,  4 ).Value = Cells(j,  2 ).Value Then
            Cells(ecount,  5 ).Value = j
            Cells(ecount,  6 ).Value = Cells(j,  2 ).Value
            ecount = ecount +  1 
            Exit For
        End If
    Next
Next
WBR
...
Рейтинг: 0 / 0
help-vba
    #33578537
eagleheart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спсибо тебе, добрый человек!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / help-vba
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]