Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Записи участника (krosav4ig) - Мир MS Excel

Результаты поиска
krosav4ig Дата: Вторник, 17.02.2015, 14:54 | Сообщение № 1781 | Тема: Разбить запись на несколько штук
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
makao, замените в формуле
Код
ПОИСКПОЗ(H1;$A:$A)
на
Код
ПОИСКПОЗ(H1;$A:$A;)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеmakao, замените в формуле
Код
ПОИСКПОЗ(H1;$A:$A)
на
Код
ПОИСКПОЗ(H1;$A:$A;)

Автор - krosav4ig
Дата добавления - 17.02.2015 в 14:54
krosav4ig Дата: Вторник, 17.02.2015, 14:24 | Сообщение № 1782 | Тема: Разбиение данных с разными разделителями.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
спер макрос тут, немного потанцевал вокруг него с бубном
[vba]
Код
Public Sub Spl()
     Dim x, n&, i&
     Dim arr(), qwe()
     If Selection.Columns.Count > 1 Then Exit Sub
     Application.ScreenUpdating = 0
     n& = Selection.Rows.Count
     For i = n To 1 Step -1
         With Selection(i)
             x = Split(.Value, ", ")
             Dim r$: r = IIf(Application.ReferenceStyle = xlR1C1, "r", "")
             ReDim arr(0)
             Dim m&: m = 0
             For Each qq In x
                 m = m + 1
                 On Error Resume Next
                 qwe = Evaluate("row(" & Replace(qq, "-", r & ":") & IIf(InStr(1, qq, "-"), "", r & ":" & qq) & ")")
                 ReDim Preserve arr(UBound(arr) + UBound(qwe) + (m = 1))
                 For j = UBound(qwe) To 1 Step -1
                     arr(UBound(arr) - j + 1) = Application.Transpose(qwe)(UBound(qwe) - j + 1)
                 Next
             Next
             If Len(.Value) * UBound(arr) And Err.Number = 0 Then
                 Rows(.Row).Offset(1, 0).Resize(UBound(arr)).Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow
                 .EntireRow.Copy Rows(.Row).Offset(1, 0).Resize(UBound(arr))
                 Range(.Address).Resize(UBound(arr) + 1, 1).Value = WorksheetFunction.Transpose(arr)
             End If
         End With
     Next
     Application.ScreenUpdating = 1
End Sub
[/vba]
выделяете C2:C3, жмете на кнопку
К сообщению приложен файл: 9518143.xls (34.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеспер макрос тут, немного потанцевал вокруг него с бубном
[vba]
Код
Public Sub Spl()
     Dim x, n&, i&
     Dim arr(), qwe()
     If Selection.Columns.Count > 1 Then Exit Sub
     Application.ScreenUpdating = 0
     n& = Selection.Rows.Count
     For i = n To 1 Step -1
         With Selection(i)
             x = Split(.Value, ", ")
             Dim r$: r = IIf(Application.ReferenceStyle = xlR1C1, "r", "")
             ReDim arr(0)
             Dim m&: m = 0
             For Each qq In x
                 m = m + 1
                 On Error Resume Next
                 qwe = Evaluate("row(" & Replace(qq, "-", r & ":") & IIf(InStr(1, qq, "-"), "", r & ":" & qq) & ")")
                 ReDim Preserve arr(UBound(arr) + UBound(qwe) + (m = 1))
                 For j = UBound(qwe) To 1 Step -1
                     arr(UBound(arr) - j + 1) = Application.Transpose(qwe)(UBound(qwe) - j + 1)
                 Next
             Next
             If Len(.Value) * UBound(arr) And Err.Number = 0 Then
                 Rows(.Row).Offset(1, 0).Resize(UBound(arr)).Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow
                 .EntireRow.Copy Rows(.Row).Offset(1, 0).Resize(UBound(arr))
                 Range(.Address).Resize(UBound(arr) + 1, 1).Value = WorksheetFunction.Transpose(arr)
             End If
         End With
     Next
     Application.ScreenUpdating = 1
End Sub
[/vba]
выделяете C2:C3, жмете на кнопку

Автор - krosav4ig
Дата добавления - 17.02.2015 в 14:24
krosav4ig Дата: Вторник, 17.02.2015, 12:54 | Сообщение № 1783 | Тема: Разбить запись на несколько штук
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
исправил формулу


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеисправил формулу

Автор - krosav4ig
Дата добавления - 17.02.2015 в 12:54
krosav4ig Дата: Вторник, 17.02.2015, 12:37 | Сообщение № 1784 | Тема: Разбить запись на несколько штук
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
так нужно?

upd.

заменил файл
К сообщению приложен файл: 0795461.xlsx (10.7 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 17.02.2015, 15:47
 
Ответить
Сообщениетак нужно?

upd.

заменил файл

Автор - krosav4ig
Дата добавления - 17.02.2015 в 12:37
krosav4ig Дата: Вторник, 17.02.2015, 00:05 | Сообщение № 1785 | Тема: PowerPivot подсчет уникальных не пустых значений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Выдает ошибку:

немного ошибся, вот так правильно
Код
=COUNTAX(DISTINCT('Больничный_лист'[Сотрудники с больничным]);[Сотрудники с больничным])


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 17.02.2015, 00:06
 
Ответить
Сообщение
Выдает ошибку:

немного ошибся, вот так правильно
Код
=COUNTAX(DISTINCT('Больничный_лист'[Сотрудники с больничным]);[Сотрудники с больничным])

Автор - krosav4ig
Дата добавления - 17.02.2015 в 00:05
krosav4ig Дата: Понедельник, 16.02.2015, 00:55 | Сообщение № 1786 | Тема: Нижний индекс в формате ячейки
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
в принципе, нет ничего невозможного.
добавил в шрифт Times New Roman юникодовский глиф U2098 - подстрочная латинская m ()
upd.
в excel это
Код
=ЮНИСИМВ(8344)

сразу не обратил внимание, что шрифт > 100 кб
шрифт
К сообщению приложен файл: wer.xlsx (8.9 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 16.02.2015, 01:07
 
Ответить
Сообщениев принципе, нет ничего невозможного.
добавил в шрифт Times New Roman юникодовский глиф U2098 - подстрочная латинская m ()
upd.
в excel это
Код
=ЮНИСИМВ(8344)

сразу не обратил внимание, что шрифт > 100 кб
шрифт

Автор - krosav4ig
Дата добавления - 16.02.2015 в 00:55
krosav4ig Дата: Воскресенье, 15.02.2015, 16:06 | Сообщение № 1787 | Тема: Счет яч. с определенными данными и зависимостью от соседних
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
или массивная формула
Код
=СЧЁТ(1/(B$1:B$21=B23)/(C$1:C$21="В"))
К сообщению приложен файл: 1818859.xlsx (10.2 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеили массивная формула
Код
=СЧЁТ(1/(B$1:B$21=B23)/(C$1:C$21="В"))

Автор - krosav4ig
Дата добавления - 15.02.2015 в 16:06
krosav4ig Дата: Пятница, 13.02.2015, 18:02 | Сообщение № 1788 | Тема: PowerPivot подсчет уникальных не пустых значений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
может
Код
=COUNTAX(DISTINCT([Сотрудники с больничным]),[Сотрудники с больничным])


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеможет
Код
=COUNTAX(DISTINCT([Сотрудники с больничным]),[Сотрудники с больничным])

Автор - krosav4ig
Дата добавления - 13.02.2015 в 18:02
krosav4ig Дата: Четверг, 12.02.2015, 12:39 | Сообщение № 1789 | Тема: Макрос группировки ошибки в написании
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
в файл добавил автотаблицу и именованный диапазон
[vba]
Код
Sub qwe()
     Dim cn: Set cn = CreateObject("ADODB.Connection")
     Dim rs: Set rs = CreateObject("ADODB.Recordset")
     Dim prop: Set prop = cn.Properties
     cn.Provider = "Microsoft.Jet.OLEDB.4.0"
     prop("data source") = ThisWorkbook.FullName
     prop("Extended Properties") = "Excel 8.0;HDR=No;"
     cn.Open
     rs.Open "select f9, sum(f12), sum(F13)  from [за месяц$" & [данные].Address(0, 0) & "] group by F9", cn, 3, 3
     With Sheets("за месяц по нн").ListObjects("Таблица1")
         On Error Resume Next
         .DataBodyRange.Delete
         .ShowTotals = False
         .Range.Cells(2, 2).CopyFromRecordset rs
         .ShowTotals = True
     End With
     rs.Close: cn.Close: Set cn = Nothing: Set rs = Nothing
End Sub
[/vba]
К сообщению приложен файл: -1-.xls (76.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Четверг, 12.02.2015, 12:42
 
Ответить
Сообщениев файл добавил автотаблицу и именованный диапазон
[vba]
Код
Sub qwe()
     Dim cn: Set cn = CreateObject("ADODB.Connection")
     Dim rs: Set rs = CreateObject("ADODB.Recordset")
     Dim prop: Set prop = cn.Properties
     cn.Provider = "Microsoft.Jet.OLEDB.4.0"
     prop("data source") = ThisWorkbook.FullName
     prop("Extended Properties") = "Excel 8.0;HDR=No;"
     cn.Open
     rs.Open "select f9, sum(f12), sum(F13)  from [за месяц$" & [данные].Address(0, 0) & "] group by F9", cn, 3, 3
     With Sheets("за месяц по нн").ListObjects("Таблица1")
         On Error Resume Next
         .DataBodyRange.Delete
         .ShowTotals = False
         .Range.Cells(2, 2).CopyFromRecordset rs
         .ShowTotals = True
     End With
     rs.Close: cn.Close: Set cn = Nothing: Set rs = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 12.02.2015 в 12:39
krosav4ig Дата: Среда, 11.02.2015, 16:11 | Сообщение № 1790 | Тема: Формула больше - ровняется несколько значений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще вариант
Код
=K5*(1-ПРОСМОТР(K5-1;{0;2;3;4;5;6;7;8;9;10}/1%%;{0;5;6;7;8;9;10;11;12;13})%)


upd.
исправил ошибку в формуле, чето меня уже клинит %)
upd2.
%)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 11.02.2015, 16:56
 
Ответить
Сообщениееще вариант
Код
=K5*(1-ПРОСМОТР(K5-1;{0;2;3;4;5;6;7;8;9;10}/1%%;{0;5;6;7;8;9;10;11;12;13})%)


upd.
исправил ошибку в формуле, чето меня уже клинит %)
upd2.
%)

Автор - krosav4ig
Дата добавления - 11.02.2015 в 16:11
krosav4ig Дата: Среда, 11.02.2015, 15:44 | Сообщение № 1791 | Тема: Построение графика без учета "пустых" значений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
...
К сообщению приложен файл: 9576820.xlsx (25.4 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение...

Автор - krosav4ig
Дата добавления - 11.02.2015 в 15:44
krosav4ig Дата: Среда, 11.02.2015, 13:55 | Сообщение № 1792 | Тема: Назначить Значение чекбокса в цикле
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
есть для таких случаев Controls. На листе оно не работает(

но можно потанцевать с бубном и все получится)
суем на лист Activex обьект MS forms 2.0 frame, в него нужные контролы, в потом в модуле листа[vba]
Код
     Dim ctrl As MSForms.Control
     For Each ctrl In Me.OLEObjects("frame1").Object.Controls
         If TypeOf ctrl Is MSForms.CheckBox Then ctrl.Value = True
     Next
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
есть для таких случаев Controls. На листе оно не работает(

но можно потанцевать с бубном и все получится)
суем на лист Activex обьект MS forms 2.0 frame, в него нужные контролы, в потом в модуле листа[vba]
Код
     Dim ctrl As MSForms.Control
     For Each ctrl In Me.OLEObjects("frame1").Object.Controls
         If TypeOf ctrl Is MSForms.CheckBox Then ctrl.Value = True
     Next
[/vba]

Автор - krosav4ig
Дата добавления - 11.02.2015 в 13:55
krosav4ig Дата: Среда, 11.02.2015, 12:52 | Сообщение № 1793 | Тема: Назначить Значение чекбокса в цикле
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а если чекбоксы не activex, а элементы формы, то
[vba]
Код
Sub asd()
     Dim cbox As CheckBox
     For Each cbox In Worksheets("Лист1").CheckBoxes
         cbox.Value = True
     Next
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеа если чекбоксы не activex, а элементы формы, то
[vba]
Код
Sub asd()
     Dim cbox As CheckBox
     For Each cbox In Worksheets("Лист1").CheckBoxes
         cbox.Value = True
     Next
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 11.02.2015 в 12:52
krosav4ig Дата: Вторник, 10.02.2015, 13:48 | Сообщение № 1794 | Тема: Поиск соответствующих значений и суммирование.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
так понятнее?
[vba]
Код
Option Explicit
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                    Optional ByVal SearchDeep As Long = 999) As Collection
     ' Получает в качестве параметра путь к папке FolderPath,
     ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
     ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
     ' Возвращает коллекцию, содержащую полные пути найденных файлов
     ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)
      
     Dim FSO As Object
     Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
     Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
     GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ' поиск
     Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                    ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
     ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
     ' перебор папок осуществляется в том случае, если SearchDeep > 1
     ' добавляет пути найденных файлов в коллекцию FileNamesColl
     Dim curfold As Object, fil As Object, sfol As Object
     On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
     If Not curfold Is Nothing Then    ' если удалось получить доступ к папке
         ' раскомментируйте эту строку для вывода пути к просматриваемой
         ' в текущий момент папке в строку состояния Excel
         ' Application.StatusBar = "Поиск в папке: " & FolderPath
         For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
             If fil.Name Like "*" & Mask Then FileNamesColl.Add fil '.path
         Next
         SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
         If SearchDeep Then    ' если надо искать глубже
             For Each sfol In curfold.SubFolders    ' перебираем все подпапки в папке FolderPath
             GetAllFileNamesUsingFSO sfol.path, Mask, FSO, FileNamesColl, SearchDeep
             Next
         End If
         Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
     End If
End Function

Sub sdf()
     Dim con: Set con = CreateObject("ADODB.Connection") 'подключение
     Dim RS: Set RS = CreateObject("ADODB.Recordset") 'рекордсет
     Dim ObjFile As Object
     Dim FilePath$, path$, ConnectionString$
      
     'Строка подключения
     ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.path & ";Extended Properties=dBASE IV"
     'ConnectionString = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & ThisWorkbook.path
      
     'открываем подключение
     con.Open ConnectionString$
      
     'создаем пустую временную базу данных dbf в папке с этим файлом
     con.Execute "create table atable (name Text(50), cnt long)"
      
     'перебираем найденные файлы dbf в папке с этим файлом и дочерних папках 1го уровня
     'если нужно искать в другой папке, то ее путь нужно указать вместо ThisWorkbook.path
     'например FilenamesCollection("C:\DBase\", ".dbf", 2)
     For Each ObjFile In FilenamesCollection(ThisWorkbook.path, ".dbf", 2)
         FilePath = ObjFile.path: path$ = Replace(FilePath, ObjFile.Name, "")
          
         'добавляем из каждого найденного файла группированные записи по первому полю в созданную временную базу
         con.Execute "INSERT INTO atable SELECT Field1 as name, sum(Field2) as cnt From " & ObjFile.Name & " IN '" & path & "' [Dbase IV;DATABASE=" & FilePath & "] group by Field1"
     Next
      
     'помещаем в рекордсет группированные записи из временной базы
     RS.Open "select name, sum(cnt) as sumcnt from atable group by name", con, 3, 3
      
     'выгружаем данные из рекордсета на лист
     [A1].CopyFromRecordset RS
      
     'закрываем рекордсет
     RS.Close
      
     'удаляем временную базу
     con.Execute "drop table atable"
      
     'закрвыаем подключение
     con.Close
     Set con = Nothing: Set RS = Nothing
End Sub
[/vba]

[p.s.]функции FilenamesCollection и GetAllFileNamesUsingFSO взяты тут: Получение списка файлов в папке и подпапках средствами VBA[/p.s.]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениетак понятнее?
[vba]
Код
Option Explicit
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                    Optional ByVal SearchDeep As Long = 999) As Collection
     ' Получает в качестве параметра путь к папке FolderPath,
     ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
     ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
     ' Возвращает коллекцию, содержащую полные пути найденных файлов
     ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)
      
     Dim FSO As Object
     Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
     Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
     GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ' поиск
     Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                    ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
     ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
     ' перебор папок осуществляется в том случае, если SearchDeep > 1
     ' добавляет пути найденных файлов в коллекцию FileNamesColl
     Dim curfold As Object, fil As Object, sfol As Object
     On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
     If Not curfold Is Nothing Then    ' если удалось получить доступ к папке
         ' раскомментируйте эту строку для вывода пути к просматриваемой
         ' в текущий момент папке в строку состояния Excel
         ' Application.StatusBar = "Поиск в папке: " & FolderPath
         For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
             If fil.Name Like "*" & Mask Then FileNamesColl.Add fil '.path
         Next
         SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
         If SearchDeep Then    ' если надо искать глубже
             For Each sfol In curfold.SubFolders    ' перебираем все подпапки в папке FolderPath
             GetAllFileNamesUsingFSO sfol.path, Mask, FSO, FileNamesColl, SearchDeep
             Next
         End If
         Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
     End If
End Function

Sub sdf()
     Dim con: Set con = CreateObject("ADODB.Connection") 'подключение
     Dim RS: Set RS = CreateObject("ADODB.Recordset") 'рекордсет
     Dim ObjFile As Object
     Dim FilePath$, path$, ConnectionString$
      
     'Строка подключения
     ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.path & ";Extended Properties=dBASE IV"
     'ConnectionString = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & ThisWorkbook.path
      
     'открываем подключение
     con.Open ConnectionString$
      
     'создаем пустую временную базу данных dbf в папке с этим файлом
     con.Execute "create table atable (name Text(50), cnt long)"
      
     'перебираем найденные файлы dbf в папке с этим файлом и дочерних папках 1го уровня
     'если нужно искать в другой папке, то ее путь нужно указать вместо ThisWorkbook.path
     'например FilenamesCollection("C:\DBase\", ".dbf", 2)
     For Each ObjFile In FilenamesCollection(ThisWorkbook.path, ".dbf", 2)
         FilePath = ObjFile.path: path$ = Replace(FilePath, ObjFile.Name, "")
          
         'добавляем из каждого найденного файла группированные записи по первому полю в созданную временную базу
         con.Execute "INSERT INTO atable SELECT Field1 as name, sum(Field2) as cnt From " & ObjFile.Name & " IN '" & path & "' [Dbase IV;DATABASE=" & FilePath & "] group by Field1"
     Next
      
     'помещаем в рекордсет группированные записи из временной базы
     RS.Open "select name, sum(cnt) as sumcnt from atable group by name", con, 3, 3
      
     'выгружаем данные из рекордсета на лист
     [A1].CopyFromRecordset RS
      
     'закрываем рекордсет
     RS.Close
      
     'удаляем временную базу
     con.Execute "drop table atable"
      
     'закрвыаем подключение
     con.Close
     Set con = Nothing: Set RS = Nothing
End Sub
[/vba]

[p.s.]функции FilenamesCollection и GetAllFileNamesUsingFSO взяты тут: Получение списка файлов в папке и подпапках средствами VBA[/p.s.]

Автор - krosav4ig
Дата добавления - 10.02.2015 в 13:48
krosav4ig Дата: Понедельник, 09.02.2015, 16:15 | Сообщение № 1795 | Тема: Как задать формулу в зависимости от цвет ячейки
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
vadimn, это макрофункция, если интересно, то можно тут почитать, тут скачать документацию и пощупать


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеvadimn, это макрофункция, если интересно, то можно тут почитать, тут скачать документацию и пощупать

Автор - krosav4ig
Дата добавления - 09.02.2015 в 16:15
krosav4ig Дата: Понедельник, 09.02.2015, 13:58 | Сообщение № 1796 | Тема: сумма чисел из суммы результата
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
монстрик какой-то получился
это заразно ;)
Код
=СУММПРОИЗВ(ЕЧИСЛО(ПОИСК("*"&ПОВТОР((СТРОКА($1:$10)-1)&"*";СТОЛБЕЦ(СМЕЩ($A:$A;;;;ДЛСТР(H4))));H4))*(СТРОКА($1:$10)-1))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
монстрик какой-то получился
это заразно ;)
Код
=СУММПРОИЗВ(ЕЧИСЛО(ПОИСК("*"&ПОВТОР((СТРОКА($1:$10)-1)&"*";СТОЛБЕЦ(СМЕЩ($A:$A;;;;ДЛСТР(H4))));H4))*(СТРОКА($1:$10)-1))

Автор - krosav4ig
Дата добавления - 09.02.2015 в 13:58
krosav4ig Дата: Понедельник, 09.02.2015, 12:40 | Сообщение № 1797 | Тема: Перевед из одного формата в другой (даты)
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
у меня по-другому получилось, массивная формула
Код
=ТЕКСТ(--(ПСТР(A2;ПОИСК(" ??,";A2)+1;2)&"."&ПОИСКПОЗ(;-ПОИСК(ТЕКСТ(СТРОКА($1:$12)*30;"[$-F1]МММ");A2))&"."&ПРАВБ(A2;13));"ДД.ММ.ГГГ ч:мм")
К сообщению приложен файл: 5934198.xlsm (16.2 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеу меня по-другому получилось, массивная формула
Код
=ТЕКСТ(--(ПСТР(A2;ПОИСК(" ??,";A2)+1;2)&"."&ПОИСКПОЗ(;-ПОИСК(ТЕКСТ(СТРОКА($1:$12)*30;"[$-F1]МММ");A2))&"."&ПРАВБ(A2;13));"ДД.ММ.ГГГ ч:мм")

Автор - krosav4ig
Дата добавления - 09.02.2015 в 12:40
krosav4ig Дата: Понедельник, 09.02.2015, 00:53 | Сообщение № 1798 | Тема: Как задать формулу в зависимости от цвет ячейки
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
только UDF
...
или макрос
а как же xlm? :p
К сообщению приложен файл: -3-.xls (31.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
только UDF
...
или макрос
а как же xlm? :p

Автор - krosav4ig
Дата добавления - 09.02.2015 в 00:53
krosav4ig Дата: Понедельник, 09.02.2015, 00:52 | Сообщение № 1799 | Тема: Как размножаются [s]ёжики[/s] формулы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[offtop]это фсе Ктулху (;,;)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[offtop]это фсе Ктулху (;,;)

Автор - krosav4ig
Дата добавления - 09.02.2015 в 00:52
krosav4ig Дата: Воскресенье, 08.02.2015, 21:29 | Сообщение № 1800 | Тема: Отобразить столбцы соответственно отфильтрованным строкам.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а вообще для читабельного кода ИМХО лучше вместо 23 писать [vba]
Код
xlNumbers or xlTextValues or xlLogical or xlErrors
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 08.02.2015, 21:30
 
Ответить
Сообщениеа вообще для читабельного кода ИМХО лучше вместо 23 писать [vba]
Код
xlNumbers or xlTextValues or xlLogical or xlErrors
[/vba]

Автор - krosav4ig
Дата добавления - 08.02.2015 в 21:29
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!