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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2011, 16:55   #1
k.soldatova
 
Регистрация: 17.06.2011
Сообщений: 5
По умолчанию Сравнение определенных значений в строках

Sub MyWork_select()
i = 6: j = 2: n = 6: k = 2: f = 1 ' f это сдвиг по столбцам для присвоения значений
p = 6 'июнь счетчик до 12го месяца считать
t = 6
Do
1:
lLastRow5 = Cells(Rows.Count, 2).End(xlUp).Row
Do While n <> lLastRow5 - 2 ' до 18 ячейки
Windows("Окно1").Activate
Sheets("ВКЛАДКА1").Activate
' если сторока пустая то оставляем постой ячейку (n, k+f)
If Cells(n, k).Value = "" Then
Cells(n, k + f).Value = "": n = n + 1:
GoTo 1
End If
s = Cells(n, k).Value
dlina = Len(s)
Debug.Print s, dlina
stat1 = " ": stat2 = " ": stat3 = " ": stat4 = " "
' здесь выделяю статьи. В каждой ячейке их разное количество от 1 до 4-х. поэтому в stаrt1-4 я присваиваю эти значения
Select Case dlina
Case 14
stat1 = Cells(n, k).Value
Debug.Print stat1
Case 14 To 35
stat1 = Left(s, 14)
stat4 = Right(s, 14)
Debug.Print stat1, stat4
Case Is > 35
stat1 = Left(s, 14)
Debug.Print stat1
Z = 21
stat2 = Mid(s, Z, 14)
Debug.Print stat2
If Z <> "" Then
Z = Z + 20
stat3 = Mid(s, Z, 14)
Debug.Print stat3, Len(stat3)
stat4 = Right(s, 14)
Debug.Print stat4
End If
End Select
Windows("Окно2").Activate
Sheets("ВКЛАДКА1").Activate
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Debug.Print lLastRow
Do While i <> lLastRow + 1
Debug.Print i, j, p
s1 = Cells(i, j).Value
t1 = Cells(6, j + p).Value
Debug.Print s1, t1
m2 = Left(s1, 14) 'это статья с первой вкладки другой таблицы, с ней будем сравнивать те статьи
Debug.Print m2, Len(m2)
vixod = False
Call Stati(bk1, bk2, bk3, bk4, m2, vixod)
If vixod = True Then Exit Do
i = i + 1
Loop
Windows("Окно2").Activate
Sheets("ВКЛАДКА2").Activate
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Debug.Print lLastRow
i = 6
Do While i <> lLastRow + 1
Debug.Print i, j
s1 = Cells(i, j).Value
t2 = Cells(6, j + p).Value
Debug.Print s1
m2 = Left(s1, 14)
Debug.Print m2
SPvixod = False
Call Stati(sp1, sp2, sp3, sp4, m2, SPvixod)
If SPvixod = True Then Exit Do
i = i + 1
Loop
Windows("Окно2").Activate
Sheets("ВКЛАДКА3").Activate
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Debug.Print lLastRow
i = 6
Do While i <> lLastRow + 1
Debug.Print i, j
s1 = Cells(i, j).Value
t3 = Cells(6, j + p).Value
Debug.Print s1
m2 = Left(s1, 14)
Debug.Print m2
PBvixod = False
Call Stati(pb1, pb2, pb3, pb4, m2, PBvixod)
If PBvixod = True Then Exit Do
i = i + 1
If n = 7 Then
d = bk1 - bk4 + sp1 - sp4 + pb1 - pb4
Debug.Print d
Else
d = bk1 + bk2 + bk3 + bk4 + sp1 + sp2 + sp3 + sp4 + pb1 + pb2 + pb3 + pb4
End If
Debug.Print d
Windows("Окно1").Activate
Sheets("ВКЛАДКА1").Activate
Cells(n, k + f).Value = d
Debug.Print Cells(n, k + f).Value
Sum = sum1 + d
Debug.Print Sum
i = i + 1
Exit Do
i = i + 1
Loop
Debug.Print n, k
n = n + 1
Loop
Loop While p <> 13
End Sub

Sub Stati(Mystat1 As Long, Mystat2 As Long, Mystat3 As Long, Mystat4 As Long, Mym2 As String, MYvixod As Boolean)
On Error GoTo Handler
Debug.Print stat1, stat4, m2
If stat1 = m2 Then Mystat1 = Cells(i, j + p).Value
If stat2 = m2 Then Mystat2 = Cells(i, j + p).Value
If stat3 = m2 Then Mystat3 = Cells(i, j + p).Value
If stat4 = m2 Then
Mystat4 = Cells(i, j + p).Value
MYvixod = True
End If
Exit Sub
Handler:
MsgBox "Ошибка"
End Sub

Скажите какие ошибки в коде чтобы я могла его отладить.
k.soldatova вне форума Ответить с цитированием
Старый 01.07.2011, 16:56   #2
k.soldatova
 
Регистрация: 17.06.2011
Сообщений: 5
По умолчанию

Добрый день!
Подскажите пожалуйста как обращаться правильно к процедуре. Выполняется процедура MyWork_select и в ней я обращаюсь к процедуре Stati. Но наверно как то неправильно передаю значения. Если возможно не вникая в программу указать мне мои ошибки. Действия которые я хочу сделать указаны в самой процедуре.
Сравниваем статьи вот например содержимое одной ячейки: 90.01.25.01.00 плюс 90.01.25.02.00 плюс 90.01.25.03.00 плюс 90.01.25.04.00
вот другой:90.01.13.00.00 без 90.01.13.06.00
то есть я беру только статьи и сравниваю их сос татьями в другой таблице и при совпадении выдаю значение в необходимой ячейке

Процедура указана выше
k.soldatova вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение значений в 2х столбцах и удаление лишних значений.. Tyr Microsoft Office Excel 2 16.12.2010 18:19
Сравнение значений в 2 массивах Verano naranjo Microsoft Office Excel 10 01.12.2010 11:49
Автоматическое вычитание при вводе определенных значений DIMONRUS Microsoft Office Excel 11 17.06.2010 20:06
Перенос данных с листов при совпадении определенных значений ячеек Тантана Microsoft Office Excel 11 21.05.2010 14:06
Поиск одинаковых значений в стобце, возврат суммы чисел из другого столбца в найденных строках! Kup Microsoft Office Excel 2 25.03.2010 10:15