Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как через SQL обратиться к колонке листа Excel по номеру колонки ?, Как через SQL обратиться к колонке листа Excel по номеру колонки ?
 
хочу создать подключение  через SQL, к листу формы https://ibb.co/yVP5g54
так как лист имеет многострочную шапку, названия колонок не в 1 строке, а считывается с 1 строки, хочу обратиться через SQL по номерам колонок для  считывания с указанной строки до последней заполненной ячейки листа
цель - уйти от одномерных массивов на каждую колонку, а сразу выбрать все нужные колонки листа в один массив

Код
[IMG]https://ibb.co/yVP5g54[/IMG]
'создаем строку запроса
    For li = LBound(avSheets) To UBound(avSheets)
 
           sQuery = "SELECT " & "SELECT COL_NAME(OBJECT_ID(" & avSheets(li) & " ), 1)" & " FROM [" & avSheets(li) & "$]"
                                                        
             
      Next li
    'сначала создаем подключение к временному файлу
    'это поможет избежать ошибок подключения к открытому файлу
    sCon = _
    "ODBC;DSN=Excel Files;DBQ=" & sTmpFileName & ";" & _
           "DefaultDir=" & sPath & ";DriverId=790;" & _
           "MaxBufferSize=2048;PageTimeout=5"

    Set oPTCache = ThisWorkbook.PivotCaches.Add(SourceType:=xlExternal)
    With oPTCache
        .Connection = sCon
        .CommandType = xlCmdSql
        .CommandText = sQuery
        Set oPT = .CreatePivotTable(rRes(3, 1))
    End With



но строка
Код
    sQuery = "SELECT " & "SELECT COL_NAME(OBJECT_ID(" & avSheets(li) & " ), 1)" & " FROM [" & avSheets(li) & "$]"
выдаёт ошибку 1004 "ошибка синтаксиса "

как в запросе
Код
 sQuery = "SELECT " & "SELECT COL_NAME(OBJECT_ID(" & avSheets(li) & " ), 1)" & " FROM [" & avSheets(li) & "$]"
обратиться к номерам колонок, а не к названиям колонок, для  считывания с указанной строки до последней заполненной ячейки листа


Любое подключение для офиса 2016 -2021 но через SQL и одним запросом для выгрузки в один массив.

Заранее спасибо
Изменено: SvetaS_love - 19.02.2022 19:46:58
одинокий странник
Как выбрать весь столбец начиная с определенной строки
 
нужно выбрать столбец в ранг начиная с определенной строки

этот код
Код
Set rg = ThisWorkbook.Sheets(Element).UsedRange.Columns(1)
выбирает весь столбец по номеру,
но как выбрать именно столбец начиная с определенной строки и до конца листа, чтобы не выбирать мусор, который идёт до нужных данных
одинокий странник
Вывести текстовый одномерный массив на лист
 
Добрый день!
есть код
нужно с других листов книги (их много) собрать тролько выделенные столбцы

Сводная не работает, так как все листы имеют многоуровневые шапки (до 7 уровней), и оформлены по 4 разным шаблонам (т.е. разное количество столбцов)
https://ibb.co/yVP5g54

ПРОБЛЕМА
массив IndeksArray на лист выводится (СТРОКА  1/139)  ,
а массив DataArray1 текстовый - нет, а просто впечатывает последнее значение  во все ячейки диапазона (СТРОКА 4/143) ,
если выводить как массив  IndeksArray  - то впечатывает только первое значение во все ячейки диапазона (СТРОКА 2/141),
хотя в отладчике видно что массив содержит и другие значения.
В чем проблема?
как исправить?
Код
  Sheets("настройка_отчета").Range("d9:d" & UBound(IndeksArray) + 9).Value = IndeksArray  
    ' Sheets("настройка_отчета").Range("C9:C" & UBound(IndeksArray) + 9).Value = DataArray1
    For Counter = 1 To UBound(DataArray1)
     Sheets("настройка_отчета").Range("C9:C" & [Counter] + 9).Value = CVar(DataArray1(Counter))    
    Next Counter

Код
Function CombineArrays(Arr1 As Variant, Arr2 As Variant) As Variant
  
    If (Not IsArray(Arr1)) And IsArray(Arr2) Then CombineArrays = Arr2: Exit Function
    If (Not IsArray(Arr2)) And IsArray(Arr1) Then CombineArrays = Arr1: Exit Function
   
    If (Not IsArray(Arr2)) And (Not IsArray(Arr1)) Then
        Debug.Print "??????: ??? ?????????? ???????? ?? ???????? ?????????!"
        CombineArrays = Null: Exit Function
    End If

    On Error Resume Next: Err.Clear
 
    If (LBound(Arr1, 2) <> LBound(Arr2, 2)) Or (UBound(Arr1, 2) <> UBound(Arr2, 2)) Then
        Debug.Print "??????: ??????????? ???????? (?? ??????) ?? ?????????"
        CombineArrays = Null: Exit Function
    End If
    If Err.Number = 9 Then
        Debug.Print "??????: ???? ?? ???????? ?? ???????? ?????????!"
        CombineArrays = Null: Exit Function
    End If

    ReDim arr(1 To UBound(Arr1, 1) + UBound(Arr2, 1), LBound(Arr1, 2) To UBound(Arr1, 2))
 
    For i = 1 To UBound(Arr1, 1)
        For j = LBound(Arr1, 2) To UBound(Arr1, 2)
            arr(i, j) = Arr1(i, j)
        Next
    Next
 
    For i = 1 To UBound(Arr2, 1)
        For j = LBound(Arr2, 2) To UBound(Arr2, 2)
            arr(i + UBound(Arr1, 1), j) = Arr2(i, j)
        Next
    Next
    CombineArrays = arr    ' ?????????? ???????????? ??????
End Function

Function CombineArrays2(Arr1 As Variant, Arr2 As Variant) As Variant
    If (Not IsArray(Arr1)) And IsArray(Arr2) Then CombineArrays2 = Arr2: Exit Function
    If (Not IsArray(Arr2)) And IsArray(Arr1) Then CombineArrays2 = Arr1: Exit Function
    ' если оба параметра функции не являются массивами
    If (Not IsArray(Arr2)) And (Not IsArray(Arr1)) Then
        Debug.Print "ОШИБКА: Оба переданных значения не являются массивами!"
        CombineArrays2 = Null: Exit Function
    End If
 
    ' проверяем совпадение размерностей массивов Arr1 и Arr2
    On Error Resume Next: Err.Clear
    ReDim arr(1 To UBound(Arr1) + UBound(Arr2))
 
    For i = 1 To UBound(Arr1, 1)
            arr(i) = Arr1(i)
    Next
 
    For i = 1 To UBound(Arr2, 1)    
            arr(i + UBound(Arr1)) = Arr2(i)
    Next
    CombineArrays2 = arr    ' возвращаем объединённый массив
End Function

Sub CreateTableM()
Dim arrRecords() As Variant
Dim aa As Variant
Dim Element As Variant
Dim rg As Range
Dim rg2 As Range
Dim rg3 As Range
Dim objRange As Range

Dim IndeksArray As Variant
Dim DataArray1 As Variant
Dim DataArray2 As Variant
Dim k As Integer
Dim ttt As Integer
Dim cl As New Collection, x

k = 0
Dim arrWsNames
arrWsNames = Array("Жовтень2021", "Жовтень2020", "Жовтень2019")
ttt = 1
ReDim DataArray2(ttt)
ReDim DataArray1(ttt)
   For Each Element In arrWsNames
     With Line
        ttt = SLastRow(Element)
     Set rg = ThisWorkbook.Sheets(Element).UsedRange.Columns(1)
     Set rg2 = ThisWorkbook.Sheets(Element).UsedRange.Columns(27)
      
        ttt = UBound(ThisWorkbook.Sheets(Element).UsedRange.Columns(1).Value)
        ReDim DataArray2(ttt)
        For i = 1 To ttt
          DataArray2(i) = Element
        Next i

         Set objRange = Union(rg, rg2)
          ОбъединённыйМассив12 = CombineArrays(IndeksArray, objRange)
        
          IndeksArray = ОбъединённыйМассив12
          ОбъединённыйМассив11 = CombineArrays2(DataArray1, DataArray2)
          DataArray1 = ОбъединённыйМассив11

        If SLastCol(Element) = 75 Then
          '  aa = rF.Value2
  
        ElseIf SLastCol(Element) = 80 Then
           ' aa = rF.Value2

        ElseIf SLastCol(Element) = 89 Then
        
           ' aa = rF.Value2
        
        End If
        k = SLastRow(Element)
        
       End With  
     Next
 'обїединение одномерных массивов в многомерный
 ReDim Preserve arrRecords(1 To ttt, 1 To 42)

     Sheets("настройка_отчета").Range("d9:d" & UBound(IndeksArray) + 9).Value = IndeksArray
     
    ' Sheets("настройка_отчета").Range("C9:C" & UBound(IndeksArray) + 9).Value = DataArray1
    For Counter = 1 To UBound(DataArray1)
     Sheets("настройка_отчета").Range("C9:C" & [Counter] + 9).Value = CVar(DataArray1(Counter))
       
    Next Counter
End Sub
одинокий странник
Вставить рисунок в Excel для интерактивной карты, чтобы цвет менялся внутри узлов а не фон всего рисунка
 
Добрый день!
Хочу сделать свою интерактивную карту - график в Excel 2016  , с управлением заливкой сгруппированных частей карты.
Вставляю рисунки с прозрачным фоном через вставка/рисунки/это устройство.
Проблема -  
Код
.Fill.ForeColor.RGB = vbYellow
заливает квадратные границы рисунка - т.е. прозрачный фон, а не фон самого рисунка, т.е. VBA не видит  узлы рисунка, в то время как на примере карты каждая часть карты отображается именно узлами и заливка происходи внутри узлов рисунка - Вопрос "как реализовать заливку внутри узлов рисунка"
Код
Dim list As Worksheet
Dim NorthAmerica As Shape
Dim SouthAmerica As Shape
Dim Europe As Shape
Dim Asia As Shape
Dim Africa As Shape
Dim Australia As Shape
Dim tovar1 As Long
Dim tovar2 As Long
Dim tovar3 As Long
tovar1 = Range("B1").Interior.Color
tovar2 = Range("C1").Interior.Color
tovar3 = Range("D1").Interior.Color

Dim a() As Variant
a = Array(tovar1, tovar2, tovar3)

Set list = Sheets("ВИЗУАЛИЗАЦИЯ")
Set Kodumska_ob = list.Shapes("Kodumska")
With Kodumska_ob
        '?????? ?????? ? ?????? ??????
        .Height = 150
        .Width = 100
        '?????? ???? ??????
        .Fill.ForeColor.RGB = vbYellow
        '???????????? ?????? ????? ?? 40 ????????
        .Rotation = -40
    End With
на рисунке 2 результата
с "нужный вариант"  - как должно быть  - выделенные узлы части рисунка и заливка внутри
с "получаемый" - как получается VBA не видит узлов рисунка  и заливает фон всего квадрата

как достичь "нужного варианта" - заменить всё автофигурами не получается, так как все автофигуры в Excel имеют стандартный перечень форм, а формы областей карты региона - не стандартные  и должны состоять из большого множества узлов.
рисунок вопроса


Заранее спасибо за ответ.
одинокий странник
Формирование общей таблицы по нескольким листам (передача массива листов из функции)
 
Добрый День!
Прошу помощи, давно не пользовалась excelem
нужно передать массив названия листов в процедуру формирующую сводную по нескольким листам.
Ошибка
"Драйвер ODBC Excel] Ошибочная инструкция SQL предполагалось "
в строке  
       Set oPT = .CreatePivotTable(rRes(3, 1))
Код
Option Explicit
Public Function SheetList() As String()
 
Dim sheet As Worksheet
Dim n As Integer
Dim i As Integer
Dim arr() As String
Dim cell As Range
 
i = 1
 
n = 0
 
With ActiveWorkbook
 
For Each sheet In ActiveWorkbook.Worksheets
 
 'Set cell = Worksheets(1).Cells(sheet.Index, 1)
 
'MsgBox (sheet.Name)
 
If ((sheet.Name <> "Ñïðàâî÷íèê") And (sheet.Name <> "îò÷åò") And (sheet.Name <> "Ñâîä")) Then
 n = n + 1
End If
 
Next
 
End With
 
ReDim arr(1 To n)
 
   
With ActiveWorkbook
 
For Each sheet In ActiveWorkbook.Worksheets
 
Set cell = Worksheets(1).Cells(sheet.Index, 1)
 
  'cell.Formula = sheet.Name
 
 'MsgBox (sheet.Name)
 
 If ((sheet.Name <> "Ñïðàâî÷íèê") And (sheet.Name <> "îò÷åò") And (sheet.Name <> "Ñâîä")) Then
 
   arr(i) = sheet.Name
 
   i = i + 1
 
 End If
 
Next
 
 End With
  
SheetList = arr()
  
 
End Function
Sub PTFromMultipleSheets()
    Dim oPTCache As PivotCache, oPT As PivotTable
    Dim sPath As String, sWbFulName As String, sTmpFileName As String
    Dim avSheets() As String
    Dim sCols As String, sQuery As String, sCon As String
    Dim rRes As Range
    Dim li As Long

    sPath = ThisWorkbook.Path
    sWbFulName = ThisWorkbook.FullName
    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
    sTmpFileName = sPath & "TempWbForDB_" & Format(Now, "yyyymmddhhmmss") & ".xls"
    'ñþäà ìîæíî äîáàâèòü åùå ëèñòû
    'òàáëèöû íà ëèñòàõ äîëæíû èìåòü îäèíàêîâîå êîë-âî ñòîëáöîâ
    'ñòîëáöû ìîãóò áûòü â ðàçíîì ïîðÿäêå, íî èìåòü îäèíàêîâûå çàãîëîâêè
    avSheets = SheetList()
    'íèæå ïåðå÷èñëÿþòñÿ çàãîëîâêè ñòîëáöîâ, íà îñíîâå êîòîðûõ ñòðîèòñÿ ñâîäíàÿ
    '÷åðåç çàïÿòóþ â êâàäðàòíûõ ñêîáêàõ
      sCols = "[Îáúåêò],[Êîíòðàãåíò],[ÑóììàÄîêóìåíòà]"
    'sCols = "*" ' - åñëè íåîáõîäèìî âêëþ÷èòü âñå ñòîëáöû
    'ïðè ýòîì øàïêà íà âñåõ ëèñòàõ äîëæíà áûòü ïîëíîñòüþ îäèíàêîâàÿ
    'äàííûå áóäóò â òîì ïîðÿäêå, â êîòîðîì ðàñïîëîæåíû ñòîëáöû
    
    Application.ScreenUpdating = False
    If Val(Application.Version) > 11 Then DelCon
    Set rRes = ThisWorkbook.Sheets(1).Cells
    rRes.Clear
    ThisWorkbook.Worksheets(avSheets).Copy
    With ActiveWorkbook
        .SaveAs sTmpFileName
        .Close
    End With
    'ñîçäàåì ñòðîêó çàïðîñà
    For li = LBound(avSheets) To UBound(avSheets)
        If li > 0 Then
            sQuery = sQuery & " UNION SELECT " & sCols & " FROM [" & avSheets(li) & "$]"
        Else
            sQuery = "SELECT " & sCols & " FROM [" & avSheets(li) & "$]"
        End If
    Next li
    'ñíà÷àëà ñîçäàåì ïîäêëþ÷åíèå ê âðåìåííîìó ôàéëó
    'ýòî ïîìîæåò èçáåæàòü îøèáîê ïîäêëþ÷åíèÿ ê îòêðûòîìó ôàéëó
    sCon = _
    "ODBC;DSN=Excel Files;DBQ=" & sTmpFileName & ";" & _
           "DefaultDir=" & sPath & ";DriverId=790;" & _
           "MaxBufferSize=2048;PageTimeout=5"

    Set oPTCache = ThisWorkbook.PivotCaches.Add(SourceType:=xlExternal)
    With oPTCache
        .Connection = sCon
        .CommandType = xlCmdSql
        .CommandText = sQuery
        Set oPT = .CreatePivotTable(rRes(3, 1))
    End With
    'òåïåðü èçìåíÿåì â çàïðîñå ñâîäíîé ïóòü ê ôàéëó íà òåêóùèé
    sCon = _
    "ODBC;DSN=Excel Files;DBQ=" & sWbFulName & ";" & _
           "DefaultDir=" & sPath & ";DriverId=790;" & _
           "MaxBufferSize=2048;PageTimeout=5"
    ThisWorkbook.PivotCaches(1).Connection = sCon

    With oPT
        'âûñòàâëÿåì ïåðâîíà÷àëüíûå íàñòðîéêè äëÿ ñâîäíîé
        With .PivotFields(1)
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields(2)
            .Orientation = xlRowField
            .Position = 2
        End With
        .AddDataField .PivotFields("Ñóììà"), "Ñóììà ïî ïîëþ Ñóììà", xlSum
    End With

    'óäàëÿåì âðåìåííûé ôàéë
    Kill sTmpFileName
    Set oPT = Nothing: Set oPTCache = Nothing
    Application.ScreenUpdating = True
End Sub

'---------------------------------------------------------------------------------------
' Procedure : DelCon
' Purpose   : Ïðîöåäóðà óäàëÿåò ïîäêëþ÷åíèÿ
'             Òðåáóåòñÿ òîëüêî äëÿ âåðñèé, âûøå 2003
'---------------------------------------------------------------------------------------
Private Sub DelCon()
    On Error Resume Next: ThisWorkbook.Connections(1).Delete: On Error GoTo 0
End Sub

Sub RefreshCon()
    Dim sCon As String, sPath As String, sWbFulName As String
    sPath = ThisWorkbook.Path
    sWbFulName = ThisWorkbook.FullName
    sCon = _
    "ODBC;DSN=Excel Files;DBQ=" & sWbFulName & ";" & _
           "DefaultDir=" & sPath & ";DriverId=790;" & _
           "MaxBufferSize=2048;PageTimeout=5"
    With ThisWorkbook
        If .PivotCaches.Count > 0 Then .PivotCaches(1).Connection = sCon
    End With
End Sub
Изменено: SvetaS_love - 11.02.2018 16:00:49
одинокий странник
загрузка файла Excel в 1С через Microsoft.ACE.OLEDB., загрузка файла Excel в 1С через Microsoft.ACE.OLEDB.
 
Не работает
Код
СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.16.0;Data Source=G:\11\Кадорр, Б.Арнаутская 26-30.xlsx;Extended Properties=Excel 16.0;";
// создание соединения
Connection=Новый ComObject("ADODB.Connection");
// Подключение
Попытка
Connection.Open(СтрокаПодключения);
Исключение
// Возврат

Сообщить("Ошибка подключения к EXCEL");
Возврат;
КонецПопытки;
сообщить("УСПЕШНО EXCEL"); 

кто знает почему?
Excel 2016, 1c 8.3.9.2033
одинокий странник
Как в листе прогноза получить данные с нижнего тренда
 
Добрый День!
Подскажите, пожалуйста, как в листе прогноза получить данные с нижнего тренда на графике....?
Заранее спасибо.
одинокий странник
Создание достоверных прогнозов средствами Excel
 
Добрый День! Подскажите, пожалуйста, кто-то проверял достоверность прогнозов создаваемых с помощью инструмента "Лист прогноза"? Кто знает как добиться достоверности прогноза (конкретные действия) или примеры использования другого функционала  в Excel? или у кого-то есть примеры макросов по прогнозированию?
прогноз продаж...нужно чтобы как можно ближе было к факту...Заранее большое спасибо.
Изменено: SvetaS_love - 29.03.2016 16:51:11
одинокий странник
Существует ли программа (не онлайн) для тестирования регулярных выражений?, перед вставкой в VBA код Excel
 
Доброе Утро! Подскажите, кто-то знает существует ли программка (не онлайн, а с инсоляцией на комп) для визуального тестирования регулярных выражений перед их вставкой в программный код VBA Excel? Заранее большое спасибо.
одинокий странник
Регулярное выражение - как правильно использовать логическое или(и)
 
Добрый Вечер!
Подскажите, кто-то может подсказать, как правильно изменить регулярное выражение:
1) чтобы в строке  
Скрытый текст

выделить все подстроки, которые между ":" и ";"  и между самими ";" и ";"   и  ";"  и "$" (концом строки)
Код
 division =";"

pReg.Pattern = "[" & ":" & division & "]" & "(.*?)" & "[" & division & "$]" & "[^" & division & "]"   'шаблон поиска.
данный шаблон выбирает почему-то только первое выражение
Цитата
: -ШМАТОЧКИ ФІЛЕ ОСЕЛЕДЕЦЯ БЕЗ ШКІРИ  В ОЛІЇ 500ГР;
т.е. срабатывает только первая часть шаблона
Код
"[" & ":"  & "]" & "(.*?)"& "[" & division & "]"
2) выбрать все символы до символа "[", за исключением самого символа "["

чтобы в строке
Цитата
28 [ 188.51 ]
выбрать только "28"
т.е. срабатывает только первая часть шаблона
Код
pReg.Pattern = "^" & "(.*?)" & "\[" 
а, например,  
Код
pReg.Pattern = "^" & "(.*?)" & "^\["
не срабатывает.
В чём ошибка в шаблонах?

Заранее большое спасибо...
одинокий странник
Шаблон - регулярное выражение разбития строки по предложениям, Шаблон - регулярное выражение разбития строки по предложениям
 
Добрый День! Подскажите кто-то знает как составить шаблон для  pReg.Pattern, объекта Set pReg = CreateObject("VBScript.RegExp")
шаблон разделения строки по предложениям. Т.е. именно по предложениям, а не по символу ".", так как символ "." может следовать после сокращения, причём сокращение может быть одиночной заглавной буквой, например "И.П.Сидоров" или "банк.полим." или "ООО" и т.д.. Так как именно предложение имеет начало (первая буква слова заглавная, но не одиночно стоящая с точкой (как И.) и не последовательность заглавных букв (как ООО), и не  последовательность заглавных букв с точкой (как И.И.) )  и конец сам символ "." который либо стоит перед следующим словом с заглавной буквой или перед концом строки (т.е. знаком $), но не после обозначения года или другого условного сокращения (как 2015р.).
Само предложение для деления
Цитата
1. Філе судака, заморожене, глазуроване, зі шкірою, без луски,  без харчових добавок та приправ, без теплової та кулінарної обробки, без теплової та  кулінарної обробки, не консервована, без ГМО. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 70-120гр. - 684 карт/короба. чиста вага - 3420кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 120-170гр.  - 664 карт/короба.чиста вага - 3320кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 140-180гр.  - 1012 карт/короба.чиста вага - 5060кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 170-230гр.  - 618 карт/короба.чиста вага - 3090кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд:230-300гр.  - 307 карт/короба. чиста вага - 1535кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд:300-500гр.  -161 карт/короба. чиста вага - 805кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 500-800гр.  -50 карт/короба. чиста вага - 500кг. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 800гр. + - 27 карт/короба. чиста вага - 270кг. Загальна чиста вага нетто -18000 кг.  Дата виробництва: 10 серпня 2015р.,  14 серпня 2015р. Виробник: ТОВ "УКРХАРЧПРОМКОМПЛЕКС" Країна виробництва-(UA).   Торговельна марка відсутня.
Необходимый результат деления
Цитата
Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 70-120гр. - 684 карт/короба. чиста вага - 3420кг.
Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 120-170гр.  - 664 карт/короба.чиста вага - 3320кг.
Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 140-180гр.  - 1012 карт/короба.чиста вага - 5060кг.
Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 170-230гр.  - 618 карт/короба.чиста вага - 3090кг.
Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 800гр. + - 27 карт/короба. чиста вага - 270кг...
(наименование продуктов "Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on)" - может быть абсолютно разным, просьба к нему не привязываться)

а строки
Цитата
Дата виробництва: 10 серпня 2015р.,  14 серпня 2015р. Виробник: ТОВ "УКРХАРЧПРОМКОМПЛЕКС" Країна виробництва-(UA).   Торговельна марка відсутня.
и строки
Цитата
1. Філе судака, заморожене, глазуроване, зі шкірою, без луски,  без харчових добавок та приправ, без теплової та кулінарної обробки, без теплової та  кулінарної обробки, не консервована, без ГМО.

выделить отдельно и продублировать началом и продолжением к каждой строке (как общие строки для всех) ,
Т.е. конечный результат:
Цитата
1. Філе судака, заморожене, глазуроване, зі шкірою, без луски,  без харчових добавок та приправ, без теплової та кулінарної обробки, без теплової та  кулінарної обробки, не консервована, без ГМО. Судак філе, зі шкірою, морож. (Frozen Pike perch fillets skin/on) Розмірний ряд: 70-120гр. - 684 карт/короба. чиста вага - 3420кг. Дата виробництва: 10 серпня 2015р.,  14 серпня 2015р. Виробник: ТОВ "УКРХАРЧПРОМКОМПЛЕКС" Країна виробництва-(UA).   Торговельна марка відсутня.


Или хотя бы подсказать как это можно сделать?


Заранее большое спасибо....
Изменено: SvetaS_love - 05.10.2015 09:51:16
одинокий странник
Возможно ли в VBA передавать в функцию имена других функций?
 
Добрый День!
Подскажите, пожалуйста, возможно ли в VBA передавать в функцию имена других функций?

вопрос:
Возможно ли в одном цикле:
1. вызвать имя конкретной функции по параметру содержащему её имя
2. передать ей массив в качестве параметра функции в внутри цикла
3. иметь возможность в условии вызова функции 2 выбирать название функции1 или другой функции обработки
Или как правильно записать?
т.е. есть
Код
функция 2()

for i=1 to 34
    m = функция1 (mF(i, 16),....)
next i

вызов функции
Код
функция 2( функция1 (mF(i, 16)) )
одинокий странник
регулярные выражения first-first-second-third-second (найти подстроку между двумя символами), требуется найти подстроку между двумя символами
 
Есть файл размера 300 000 строк. Нужно перед процедурой нечёткого поиска, разложить строку "наименование товара" на подстроки. Разложение  по определённому символу мало эффективно.   Т.е. нужна функция выделения подстрок между двумя символами, согласно следующему правилу:

1.МЕЖДУ ЗНАКАМИ "'" [ПОДСТРОКА] ".'"
2.МЕЖДУ ЗНАКАМИ "-" [ПОДСТРОКА] ";-"
3.МЕЖДУ ЗНАКАМИ ";" [ПОДСТРОКА] ";"
4.МЕЖДУ ЗНАКАМИ "-" [ПОДСТРОКА] ") -"
5.МЕЖДУ ЗНАКАМИ "-" [ПОДСТРОКА] ",-"
6.МЕЖДУ ЗНАКАМИ ")."[ПОДСТРОКА] ")."
7.МЕЖДУ ЗНАКАМИ "-" [ПОДСТРОКА] ".-"
8.МЕЖДУ ЗНАКАМИ "-" [ПОДСТРОКА] ",-"
9.МЕЖДУ ЗНАКАМИ "." [ПОДСТРОКА] "."

подскажите, кто-то знает где можно поискать информацию ИЛИ с чего начать :( :cry: :cry:  ?
одинокий странник
Объявление динамического массива public в пользовательском типе в классе
 
Добрый Вечер!
Скажите,кто-то сталкивался с проблемой создания массива динамического , который был бы виден во всех классах

(т.е. для переноса информации между ) .
т.е. я определяю класс пользовательского типа данных
Код
 Public iArr As New Arr1
 Public imyColumns As Long
 Public imyRows As Long
но если поставить
Код
Public iArr() As Variant 
 Public imyColumns As Long
 Public imyRows As Long
даёт ошибку
тогда: определяю отдельным классом
Код
 Dim Arr1() As Variant
и ставлю в модуле
Код
Sub Example()
    Dim Large_Array As New Large_Array
    Dim Arr()  As New MyArr
    Large_Array.Path_Import_file = "G:\ÐÀÇÐÀÁÎÒÊÀ_2\äàííî" & "\"
    Large_Array.Import_file = "exim_ua_2015_1-8_ðûá.xls"
    Large_Array.Sheet_Import_file = "exim_ua_2015_1_8_ðûá"
    Arr().iArr = Large_Array.ToArray().iArr
       
End Sub


тогда в других классах ставлю:


кл. ADO
Dim MyArr As New MyArr
Код
.....
Public Function ToArray() As MyArr
    Dim Data() As Variant
    Dim Arr() As New Arr1
    Dim Column As Long
    Dim Row As Long
    Dim t As MyArr
............................
    t.iArr = Arr
    t.imyColumns = UBound(Data, 2)
    t.imyRows = UBound(Data, 1)
   


кл Large_Array
Код
Public Function ToArray() As MyArr
    Dim Data() As Variant
    Dim Arr() As Variant
    Dim Column As Long
    Dim Row As Long
    
    ADO.DataSource = Path_Import_file & Import_file    ' ïîëíûé ïóòü ê êíèãå
    ADO.Query ("SELECT * FROM [" & Sheet_Import_file & "$]")
    ToArray = ADO.ToArray()
End Function
Изменено: SvetaS_love - 20.09.2015 16:06:46
одинокий странник
Страницы: 1
Наверх