rosko, видимо у вас ограниченная учетная запись, попробуйте так [vba]
Код
#If VBA7 Then Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As LongPtr, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long _ ) As LongPtr #Else Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long _ ) As Long #End If
Public Sub install_msflxgrd() Dim d$, b$ If Len(Environ("ProgramW6432")) > 0 Then d = "%windir%\syswow64\" b = "wow6432node\Microsoft" Else d = "%windir%\system32\" b = "Microsoft" End If ShellExecute 0, "runas", "cmd.exe", "/c " & _ "REG ADD ""HKLM\SOFTWARE\" & b & "\Internet Explorer\ActiveX Compatibility\{6262D3A0-531B-11CF-91F6-C2863C385E30}\Compatibility Flags"" /f /t REG_SZ /d 0&&" & _ "REG ADD ""HKCR\Licenses\72E67120-5959-11cf-91F6-C2863C385E30"" /f /t REG_SZ /d ibcbbbebqbdbciebmcobmbhifcmciibblgmf&&" & _ "regsvr32 /s " & d & "msflxgrd.ocx " & d & "msstkprp.dll", "", 0 End Sub
[/vba]
rosko, видимо у вас ограниченная учетная запись, попробуйте так [vba]
Код
#If VBA7 Then Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As LongPtr, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long _ ) As LongPtr #Else Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long _ ) As Long #End If
Public Sub install_msflxgrd() Dim d$, b$ If Len(Environ("ProgramW6432")) > 0 Then d = "%windir%\syswow64\" b = "wow6432node\Microsoft" Else d = "%windir%\system32\" b = "Microsoft" End If ShellExecute 0, "runas", "cmd.exe", "/c " & _ "REG ADD ""HKLM\SOFTWARE\" & b & "\Internet Explorer\ActiveX Compatibility\{6262D3A0-531B-11CF-91F6-C2863C385E30}\Compatibility Flags"" /f /t REG_SZ /d 0&&" & _ "REG ADD ""HKCR\Licenses\72E67120-5959-11cf-91F6-C2863C385E30"" /f /t REG_SZ /d ibcbbbebqbdbciebmcobmbhifcmciibblgmf&&" & _ "regsvr32 /s " & d & "msflxgrd.ocx " & d & "msstkprp.dll", "", 0 End Sub
rosko, совсем из головы вылетело, вот так должно быть, и забыл сказать, что после установки нужно перезапустить excel [vba]
Код
#If Win64 Then Private Const d$ = "%windir%\syswow64\" Private Const b$ = "wow6432node\Microsoft" #Else Private Const d$ = "%windir%\system32\" Private Const b$ = "Microsoft" #End If Sub install_msflxgrd() With CreateObject("WScript.Shell") .RegWrite "HKLM\SOFTWARE\" & b$ & "\Internet Explorer\ActiveX Compatibility\{6262D3A0-531B-11CF-91F6-C2863C385E30}\Compatibility Flags", 0, "REG_DWORD" .RegWrite "HKCR\Licenses\72E67120-5959-11cf-91F6-C2863C385E30\", "ibcbbbebqbdbciebmcobmbhifcmciibblgmf", "REG_SZ" .Run "regsvr32 /s " & d & "msflxgrd.ocx " & d & "msstkprp.dll" End With End Sub
[/vba] если разрядность ОС отличается от разрядности Excel, то можно [vba]
Код
Sub install_msflxgrd() Dim d$, b$ If Len(Environ("ProgramW6432")) > 0 Then d = "%windir%\syswow64\" b = "wow6432node\Microsoft" Else d = "%windir%\system32\" b = "Microsoft" End If With CreateObject("WScript.Shell") .RegWrite "HKLM\SOFTWARE\" & b$ & "\Internet Explorer\ActiveX Compatibility\{6262D3A0-531B-11CF-91F6-C2863C385E30}\Compatibility Flags", 0, "REG_DWORD" .RegWrite "HKCR\Licenses\72E67120-5959-11cf-91F6-C2863C385E30\", "ibcbbbebqbdbciebmcobmbhifcmciibblgmf", "REG_SZ" .Run "regsvr32 /s " & d & "msflxgrd.ocx " & d & "msstkprp.dll" End With End Sub
[/vba][p.s.]если включен UAC, то excel должен быть запущен с правами администратора
rosko, совсем из головы вылетело, вот так должно быть, и забыл сказать, что после установки нужно перезапустить excel [vba]
Код
#If Win64 Then Private Const d$ = "%windir%\syswow64\" Private Const b$ = "wow6432node\Microsoft" #Else Private Const d$ = "%windir%\system32\" Private Const b$ = "Microsoft" #End If Sub install_msflxgrd() With CreateObject("WScript.Shell") .RegWrite "HKLM\SOFTWARE\" & b$ & "\Internet Explorer\ActiveX Compatibility\{6262D3A0-531B-11CF-91F6-C2863C385E30}\Compatibility Flags", 0, "REG_DWORD" .RegWrite "HKCR\Licenses\72E67120-5959-11cf-91F6-C2863C385E30\", "ibcbbbebqbdbciebmcobmbhifcmciibblgmf", "REG_SZ" .Run "regsvr32 /s " & d & "msflxgrd.ocx " & d & "msstkprp.dll" End With End Sub
[/vba] если разрядность ОС отличается от разрядности Excel, то можно [vba]
Код
Sub install_msflxgrd() Dim d$, b$ If Len(Environ("ProgramW6432")) > 0 Then d = "%windir%\syswow64\" b = "wow6432node\Microsoft" Else d = "%windir%\system32\" b = "Microsoft" End If With CreateObject("WScript.Shell") .RegWrite "HKLM\SOFTWARE\" & b$ & "\Internet Explorer\ActiveX Compatibility\{6262D3A0-531B-11CF-91F6-C2863C385E30}\Compatibility Flags", 0, "REG_DWORD" .RegWrite "HKCR\Licenses\72E67120-5959-11cf-91F6-C2863C385E30\", "ibcbbbebqbdbciebmcobmbhifcmciibblgmf", "REG_SZ" .Run "regsvr32 /s " & d & "msflxgrd.ocx " & d & "msstkprp.dll" End With End Sub
[/vba][p.s.]если включен UAC, то excel должен быть запущен с правами администратораkrosav4ig
Function LastDateInText(Text As String) As Date Dim s$ With CreateObject("VBScript.RegExp") .Pattern = ".*(\d\d)\.(\d\d)\.(\d{4})( \(([\d:]{5}))?[^\d]?|[\s\S]+" .Global = True: .MultiLine = True Set f = .Execute(Text) s = "--{" & .Replace(Text, """$2-$1-$3 $5""" & ",") & "0}" End With With Application LastDateInText = .Max(.IfError(Evaluate(.Trim(s)), 0)) End With End Function
Function LastDateInText(Text As String) As Date Dim s$ With CreateObject("VBScript.RegExp") .Pattern = ".*(\d\d)\.(\d\d)\.(\d{4})( \(([\d:]{5}))?[^\d]?|[\s\S]+" .Global = True: .MultiLine = True Set f = .Execute(Text) s = "--{" & .Replace(Text, """$2-$1-$3 $5""" & ",") & "0}" End With With Application LastDateInText = .Max(.IfError(Evaluate(.Trim(s)), 0)) End With End Function
[/vba] +числовой формат и условное форматированиеkrosav4ig
Sub banksID_JSON_REGEX() With CreateObject("msxml2.xmlhttp") .Open "get", "http://skad.minfin.ru:8081/OpenDataAPI/api/json/dataset/7710168360-BanksID/version/0/content", 0 .send Dim s$: s = .responsetext End With With CreateObject("VBScript.RegExp") .Global = True .Pattern = "([^\\])""+|\\": s = .Replace(s, "$1") .Pattern = ",?f\d:": s = .Replace(s, Chr(9) & "@") .Pattern = "\[\{|},{|\}\]": s = .Replace(s, vbLf) .Pattern = "([\n\r])+\t?|": s = .Replace(s, "$1") .Pattern = "(\d{4}-\d{2}-\d{2})T(\d{2})": s = .Replace(s, "$1 $2") End With With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Mid(s, 2, Len(s) - 2): .PutInClipboard End With Application.ScreenUpdating = 0: Application.EnableEvents = 0 With Sheets("Json+RegEx").ListObjects(1) If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete .Parent.Activate: .HeaderRowRange(2, 1).Activate .Parent.PasteSpecial Format:="Текст" .HeaderRowRange = Array("ikb", "name", "ikbstatus", "statusdate") .DataBodyRange.Replace "@", Empty, xlPart End With Application.ScreenUpdating = 1: Application.EnableEvents = 1 End Sub Sub banksID_JSON_SC() Dim s$ With CreateObject("msxml2.xmlhttp") .Open "get", "http://skad.minfin.ru:8081/OpenDataAPI/api/json/dataset/7710168360-BanksID/version/0/content", 0 .send s = .responsetext End With With CreateObject("ScriptControl") .Language = "JScript" .AddCode "function getSentenceCount(){return obj.length;}" .AddCode "function getSentence(i){return obj[i];}" .Eval "var obj=(" & s & ")" Dim n&: n = .Run("getSentenceCount") - 1 Dim i& Dim arr ReDim arr(0 To n, 0 To 3) For i = 0 To n With .Run("getSentence", i) arr(i, 0) = .f1: arr(i, 1) = .f2 arr(i, 2) = .f3: arr(i, 3) = Replace(.f4, "T", " ") End With Next i End With Application.ScreenUpdating = 0: Application.EnableEvents = 0 With Sheets("Json+ScriptControl").ListObjects(1) If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete .HeaderRowRange(2, 1).Resize(n + 1, 4).Value = arr End With Application.ScreenUpdating = 1: Application.EnableEvents = 1 End Sub Sub banksID_xml() With Sheets("xml") .QueryTables(1).Refresh 0 .Parent.XmlMaps("Banks_карта").Import URL:=.[G16] End With End Sub Sub banksID_Web() Application.EnableEvents = 0 Sheets("Web").QueryTables(1).Refresh 0 Application.EnableEvents = 1 End Sub Sub banksID_JSON_PQ() ThisWorkbook.Connections("Power Query - Запрос1").Refresh End Sub
[/vba]
[vba]
Код
Public FG As MSFlexGridLib.MSFlexGrid, n&, r& Dim bank$, sc As Object, oXMLHTTP As Object Sub init() Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") Set sc = CreateObject("ScriptControl") With sc .Language = "JScript" .AddCode "function getSentenceCount(){return obj.result.length;}" .AddCode "function getSentence(i){return obj.result[i];}" .AddCode "function encode(str) {return encodeURIComponent(str);}" End With End Sub Function RussianStringToURLEncode(ByVal bank_name As String) As String RussianStringToURLEncode = sc.Run("encode", bank_name) End Function Function GetHTTPResponse(ByVal sURL As String) As String On Error Resume Next With oXMLHTTP .Open "GET", sURL, False .send GetHTTPResponse = .responsetext End With End Function Function Readjson(s) As String Dim URL As String, itm As Object, k&, str$ ',name With sc .Eval "var obj=(" & s & ")" n = .Run("getSentenceCount") If n > 1 Then UserForm1.Hide FG.TextMatrix(0, 0) = bank Do FG.TextMatrix(k + 1, 0) = .Run("getSentence", k).name k = k + 1 Loop While k < n UserForm1.Show Set FG = Nothing End If If n Then With .Run("getSentence", r) URL = "http://zakupki.gov.ru/epz/bankguarantee/extendedsearch/search.html?bankSearchItem.title=" & _ RussianStringToURLEncode(.name) & "&bankSearchItem.code=" & .cpz & "&bankSearchItem.fz94id=" _ & .fz94id & "&bankSearchItem.fz223id=" & .fz223id End With End If End With Readjson = URL End Function Function zakupki(банк As String) Application.Volatile 0 Dim json As String, URL As String bank = банк Call init With CreateObject("VBScript.RegExp") .Global = True .Pattern = "[^\""]*\""(.*)\""[^\""]*" банк = RussianStringToURLEncode(IIf(.test(банк), .Replace(банк, "$1"), банк)) End With json = GetHTTPResponse("http://zakupki.gov.ru/epz/organization/chooseOrganization/autocompleteReturnsCodes.html?term=" & банк & "&placeOfSearch=&organizationType=BANKS") URL = Readjson(json) zakupki = Readtotal(GetHTTPResponse(URL)) Set oXMLHTTP = Nothing Set sc = Nothing End Function Function Readtotal(ByVal s As String) As Integer Dim arr If Len(s) Then With CreateObject("htmlfile") .write Replace(s, "class", "id") arr = Split(Replace(Replace(.getElementByid("allRecords").innerhtml, "<", " "), "-", " "), " ") With Application Readtotal = .Max(.IfError(.Round(arr, 0), 0)) End With End With End If End Function
[/vba]
[vba]
Код
Sub banksID_JSON_REGEX() With CreateObject("msxml2.xmlhttp") .Open "get", "http://skad.minfin.ru:8081/OpenDataAPI/api/json/dataset/7710168360-BanksID/version/0/content", 0 .send Dim s$: s = .responsetext End With With CreateObject("VBScript.RegExp") .Global = True .Pattern = "([^\\])""+|\\": s = .Replace(s, "$1") .Pattern = ",?f\d:": s = .Replace(s, Chr(9) & "@") .Pattern = "\[\{|},{|\}\]": s = .Replace(s, vbLf) .Pattern = "([\n\r])+\t?|": s = .Replace(s, "$1") .Pattern = "(\d{4}-\d{2}-\d{2})T(\d{2})": s = .Replace(s, "$1 $2") End With With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Mid(s, 2, Len(s) - 2): .PutInClipboard End With Application.ScreenUpdating = 0: Application.EnableEvents = 0 With Sheets("Json+RegEx").ListObjects(1) If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete .Parent.Activate: .HeaderRowRange(2, 1).Activate .Parent.PasteSpecial Format:="Текст" .HeaderRowRange = Array("ikb", "name", "ikbstatus", "statusdate") .DataBodyRange.Replace "@", Empty, xlPart End With Application.ScreenUpdating = 1: Application.EnableEvents = 1 End Sub Sub banksID_JSON_SC() Dim s$ With CreateObject("msxml2.xmlhttp") .Open "get", "http://skad.minfin.ru:8081/OpenDataAPI/api/json/dataset/7710168360-BanksID/version/0/content", 0 .send s = .responsetext End With With CreateObject("ScriptControl") .Language = "JScript" .AddCode "function getSentenceCount(){return obj.length;}" .AddCode "function getSentence(i){return obj[i];}" .Eval "var obj=(" & s & ")" Dim n&: n = .Run("getSentenceCount") - 1 Dim i& Dim arr ReDim arr(0 To n, 0 To 3) For i = 0 To n With .Run("getSentence", i) arr(i, 0) = .f1: arr(i, 1) = .f2 arr(i, 2) = .f3: arr(i, 3) = Replace(.f4, "T", " ") End With Next i End With Application.ScreenUpdating = 0: Application.EnableEvents = 0 With Sheets("Json+ScriptControl").ListObjects(1) If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete .HeaderRowRange(2, 1).Resize(n + 1, 4).Value = arr End With Application.ScreenUpdating = 1: Application.EnableEvents = 1 End Sub Sub banksID_xml() With Sheets("xml") .QueryTables(1).Refresh 0 .Parent.XmlMaps("Banks_карта").Import URL:=.[G16] End With End Sub Sub banksID_Web() Application.EnableEvents = 0 Sheets("Web").QueryTables(1).Refresh 0 Application.EnableEvents = 1 End Sub Sub banksID_JSON_PQ() ThisWorkbook.Connections("Power Query - Запрос1").Refresh End Sub
[/vba]
[vba]
Код
Public FG As MSFlexGridLib.MSFlexGrid, n&, r& Dim bank$, sc As Object, oXMLHTTP As Object Sub init() Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") Set sc = CreateObject("ScriptControl") With sc .Language = "JScript" .AddCode "function getSentenceCount(){return obj.result.length;}" .AddCode "function getSentence(i){return obj.result[i];}" .AddCode "function encode(str) {return encodeURIComponent(str);}" End With End Sub Function RussianStringToURLEncode(ByVal bank_name As String) As String RussianStringToURLEncode = sc.Run("encode", bank_name) End Function Function GetHTTPResponse(ByVal sURL As String) As String On Error Resume Next With oXMLHTTP .Open "GET", sURL, False .send GetHTTPResponse = .responsetext End With End Function Function Readjson(s) As String Dim URL As String, itm As Object, k&, str$ ',name With sc .Eval "var obj=(" & s & ")" n = .Run("getSentenceCount") If n > 1 Then UserForm1.Hide FG.TextMatrix(0, 0) = bank Do FG.TextMatrix(k + 1, 0) = .Run("getSentence", k).name k = k + 1 Loop While k < n UserForm1.Show Set FG = Nothing End If If n Then With .Run("getSentence", r) URL = "http://zakupki.gov.ru/epz/bankguarantee/extendedsearch/search.html?bankSearchItem.title=" & _ RussianStringToURLEncode(.name) & "&bankSearchItem.code=" & .cpz & "&bankSearchItem.fz94id=" _ & .fz94id & "&bankSearchItem.fz223id=" & .fz223id End With End If End With Readjson = URL End Function Function zakupki(банк As String) Application.Volatile 0 Dim json As String, URL As String bank = банк Call init With CreateObject("VBScript.RegExp") .Global = True .Pattern = "[^\""]*\""(.*)\""[^\""]*" банк = RussianStringToURLEncode(IIf(.test(банк), .Replace(банк, "$1"), банк)) End With json = GetHTTPResponse("http://zakupki.gov.ru/epz/organization/chooseOrganization/autocompleteReturnsCodes.html?term=" & банк & "&placeOfSearch=&organizationType=BANKS") URL = Readjson(json) zakupki = Readtotal(GetHTTPResponse(URL)) Set oXMLHTTP = Nothing Set sc = Nothing End Function Function Readtotal(ByVal s As String) As Integer Dim arr If Len(s) Then With CreateObject("htmlfile") .write Replace(s, "class", "id") arr = Split(Replace(Replace(.getElementByid("allRecords").innerhtml, "<", " "), "-", " "), " ") With Application Readtotal = .Max(.IfError(.Round(arr, 0), 0)) End With End With End If End Function
rosko, по первому вопросу из 1 поста: зачем pdf, если у минфина есть опендата 7710168360-BanksID? в файле сделал несколько вариантов получения списка банков + на основе кода doober сделал еще 1 вариант получения закупок, если при первом запросе (выбор из справочника) возвращается >1 значения, выпадает форма для выбора нужного, выбор двойным тыком на форме контрол MSFlexgird, если у вас он не установлен, работать не будет, в архиве msflxgrd_ocx.zip нужные файлы, копируем в system32 (если x64 - в syswow64) и запускаем install_msflxgrd
rosko, по первому вопросу из 1 поста: зачем pdf, если у минфина есть опендата 7710168360-BanksID? в файле сделал несколько вариантов получения списка банков + на основе кода doober сделал еще 1 вариант получения закупок, если при первом запросе (выбор из справочника) возвращается >1 значения, выпадает форма для выбора нужного, выбор двойным тыком на форме контрол MSFlexgird, если у вас он не установлен, работать не будет, в архиве msflxgrd_ocx.zip нужные файлы, копируем в system32 (если x64 - в syswow64) и запускаем install_msflxgrdkrosav4ig
Private Sub Workbook_Open() Application.ScreenUpdating = 0 Sheets("Лист").Activate With [C4:M4].Resize(Application.CountA([B:B]) - 1) .EntireRow.Hidden = True .SpecialCells(2, 23).EntireRow.Select With .Offset(, -2).Find(Date) Union(Selection, .Resize(3)).EntireRow.Hidden = False Application.Goto .Cells, True End With End With Application.ScreenUpdating = 1 End Sub
[/vba]
еще пара вариантов 1 без макросов, фильтром по доп столбцу (O:O) с формулой
Private Sub Workbook_Open() Application.ScreenUpdating = 0 Sheets("Лист").Activate With [C4:M4].Resize(Application.CountA([B:B]) - 1) .EntireRow.Hidden = True .SpecialCells(2, 23).EntireRow.Select With .Offset(, -2).Find(Date) Union(Selection, .Resize(3)).EntireRow.Hidden = False Application.Goto .Cells, True End With End With Application.ScreenUpdating = 1 End Sub
раз все-таки тема в разделе Вопросы по Excel, предложу формульный вариант (только для небольшого количества исходных данных, ибо формула массивная и вычисляется медленно) в файле из 4 поста добавил сверху пустую строку, в F1 число 2 (кол-во повторов), ниже формула
раз все-таки тема в разделе Вопросы по Excel, предложу формульный вариант (только для небольшого количества исходных данных, ибо формула массивная и вычисляется медленно) в файле из 4 поста добавил сверху пустую строку, в F1 число 2 (кол-во повторов), ниже формула
Function Phone(str$) With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(((\+7|8)(|-| )?)?((\(|-| )?\d{3}(\)|-| )?){2}((-| )?\d{2}){2})|\d{2}((-| )?\d{2}){2}" If .Test(str) Then Dim Item As Object For Each Item In .Execute(str) Phone = Phone & IIf(Phone > "", vbLf, "") & Trim(Item) Next End If End With End Function
[/vba]
поправочка... [vba]
Код
Function Phone(str$) With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(((\+7|8)(|-| )?)?((\(|-| )?\d{3}(\)|-| )?){2}((-| )?\d{2}){2})|\d{2}((-| )?\d{2}){2}" If .Test(str) Then Dim Item As Object For Each Item In .Execute(str) Phone = Phone & IIf(Phone > "", vbLf, "") & Trim(Item) Next End If End With End Function
Spartan77, держите два еще варианта 01 - считается ежедневный приход/расход по первым трем столбцам 02 - считается ежедневный приход/расход по первым четырем столбцам
upd. Заменил файлы, ошибочка была
upd. еще раз заменил файлы, не весь приход считался, сейчас должно быть правильно
[p.s.]для корректной работы все исходные данные должны быть строго типизированы т.е. в одном столбце должны быть значения одного типа данных в исходном файле значения в столбцах были вперемешку (число и число, записанное текстом) в столбце с ценой я заменил пробел и неразрывный пробел на пустоту и преобразовал во всех столбцах все числа записанные текстом в число как преобразовать число, записанное текстом в число
Spartan77, держите два еще варианта 01 - считается ежедневный приход/расход по первым трем столбцам 02 - считается ежедневный приход/расход по первым четырем столбцам
upd. Заменил файлы, ошибочка была
upd. еще раз заменил файлы, не весь приход считался, сейчас должно быть правильно
[p.s.]для корректной работы все исходные данные должны быть строго типизированы т.е. в одном столбце должны быть значения одного типа данных в исходном файле значения в столбцах были вперемешку (число и число, записанное текстом) в столбце с ценой я заменил пробел и неразрывный пробел на пустоту и преобразовал во всех столбцах все числа записанные текстом в число как преобразовать число, записанное текстом в числоkrosav4ig
Spartan77, как считать повторяющиеся артикулы (например 34356778037, 34356792571,34356789502 на 1 листе), у которых стоят разные значения в столбцах D и E?
Spartan77, как считать повторяющиеся артикулы (например 34356778037, 34356792571,34356789502 на 1 листе), у которых стоят разные значения в столбцах D и E?krosav4ig