учел замечание _Boroda_ по поводу пробелов, а также отключил обновление страницы [vba]
Код
Sub qwerty() Dim lr_fm As Long Dim lr_lm As Long Application.ScreenUpdating = False lr_fm = Cells(Rows.Count, 1).End(xlUp).Row lr_lm = Cells(Rows.Count, 1).End(xlUp).Row For i = 4 To lr_lm 'август fnd_name = False sum_equal = True For j = 4 To lr_fm 'февраль If Trim(Range("A" & i)) = Trim(Range("F" & j)) Then fnd_name = True If Range("B" & i) > Range("G" & j) Then sum_equal = False Range("C" & i) = Range("B" & i) - Range("G" & j) Exit For Else Range("C" & i) = "не увеличилась" End If End If Next j If Not fnd_name Then Range("C" & i) = "new" End If Next i Application.ScreenUpdating = True End Sub
[/vba]
учел замечание _Boroda_ по поводу пробелов, а также отключил обновление страницы [vba]
Код
Sub qwerty() Dim lr_fm As Long Dim lr_lm As Long Application.ScreenUpdating = False lr_fm = Cells(Rows.Count, 1).End(xlUp).Row lr_lm = Cells(Rows.Count, 1).End(xlUp).Row For i = 4 To lr_lm 'август fnd_name = False sum_equal = True For j = 4 To lr_fm 'февраль If Trim(Range("A" & i)) = Trim(Range("F" & j)) Then fnd_name = True If Range("B" & i) > Range("G" & j) Then sum_equal = False Range("C" & i) = Range("B" & i) - Range("G" & j) Exit For Else Range("C" & i) = "не увеличилась" End If End If Next j If Not fnd_name Then Range("C" & i) = "new" End If Next i Application.ScreenUpdating = True End Sub
файл = параметры = центр управление безопасностью = параметры центра управления безопасностью = параметры макросов = включить все макросы. Это в 2010 екселе. Примерно там же в 2007.
файл = параметры = центр управление безопасностью = параметры центра управления безопасностью = параметры макросов = включить все макросы. Это в 2010 екселе. Примерно там же в 2007.SergeyKorotun
Попробуйте скопировать из одного месяца значения той ячейки, в которой вы считаете что данные одинаковые и вставить в другой месяц в соответствующую ячейку и запустите макрос. Если не напишет "new", значит данные одинаковые только визуально, как например "а" и "a", а на самом деле разные. В примере одна "а" русская, а вторая - английская.
Попробуйте скопировать из одного месяца значения той ячейки, в которой вы считаете что данные одинаковые и вставить в другой месяц в соответствующую ячейку и запустите макрос. Если не напишет "new", значит данные одинаковые только визуально, как например "а" и "a", а на самом деле разные. В примере одна "а" русская, а вторая - английская.SergeyKorotun
ну я не знаю, мне по впр находило гораааздо меньше строк... У меня разница между месяцами должна быть 8 млн, а тут только новых позиций на сумму 21 млн. Что то где то не сходится... Я новые позиции наверно тогда вытащу с помощью впр, а разницу в суммах возьму с твоего примера. Тогда вроде бы все более менее сойдется...
ну я не знаю, мне по впр находило гораааздо меньше строк... У меня разница между месяцами должна быть 8 млн, а тут только новых позиций на сумму 21 млн. Что то где то не сходится... Я новые позиции наверно тогда вытащу с помощью впр, а разницу в суммах возьму с твоего примера. Тогда вроде бы все более менее сойдется...Пашка
строки, в которых есть "~", ексель не находит. "~" обошел. Если еще что-то не находит, указывайте номера строк. [vba]
Код
Sub qwerty() Dim lr_fm As Long Dim lr_lm As Long Application.ScreenUpdating = False lr_fm = Cells(Rows.Count, 1).End(xlUp).Row lr_lm = Cells(Rows.Count, 1).End(xlUp).Row For i = 4 To lr_lm 'август fnd_name = False sum_equal = True For j = 4 To lr_fm 'февраль If Replace(Trim(Range("A" & i)), "~", "-") = Replace(Trim(Range("F" & j)), "~", "-") Then fnd_name = True If Range("B" & i) > Range("G" & j) Then sum_equal = False Range("C" & i) = Range("B" & i) - Range("G" & j) Exit For Else Range("C" & i) = "не увеличилась" End If End If Next j If Not fnd_name Then Range("C" & i) = "new" End If Next i Application.ScreenUpdating = True End Sub
[/vba]
строки, в которых есть "~", ексель не находит. "~" обошел. Если еще что-то не находит, указывайте номера строк. [vba]
Код
Sub qwerty() Dim lr_fm As Long Dim lr_lm As Long Application.ScreenUpdating = False lr_fm = Cells(Rows.Count, 1).End(xlUp).Row lr_lm = Cells(Rows.Count, 1).End(xlUp).Row For i = 4 To lr_lm 'август fnd_name = False sum_equal = True For j = 4 To lr_fm 'февраль If Replace(Trim(Range("A" & i)), "~", "-") = Replace(Trim(Range("F" & j)), "~", "-") Then fnd_name = True If Range("B" & i) > Range("G" & j) Then sum_equal = False Range("C" & i) = Range("B" & i) - Range("G" & j) Exit For Else Range("C" & i) = "не увеличилась" End If End If Next j If Not fnd_name Then Range("C" & i) = "new" End If Next i Application.ScreenUpdating = True End Sub