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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2018, 13:37   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от tor45 Посмотреть сообщение
как-то так. извиняюсь за костноязычность объяснения алгоритма. может моя блок-схема громмоздка и можно всё сделать как-то оптимальнее.
да нет, это нормальное описание и алгоритм годный вполне.
если бы я писал макрос, то такой же примерно алгоритм и воплощал.



Цитата:
Сообщение от tor45 Посмотреть сообщение
просто есть таблицы excel с очень большим количеством оборудования. переделывать всю эту информацию в access - праздник труда.
Вам на месте, конечно, виднее.
Тут больше проблема, что дальше делать - вести учёт в Excel или в БД.
если в БД, то выгрузить данные и потом "засосать" в любую БД - это не так сложно, как кажется.
и от количества файлов и строк в файле не зависит. Если сделаете автоматическую выгрузку и импорт небольшой таблицы из вашего примера, то никто не помешает сделать тоже самое для сотен тысяч строк и сотен файлов.

Но, как я понимаю, о переводе данных в БД речи не идёт, Вы остановились на макросе в Excel, верно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2018, 13:42   #12
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

верно. думаю в данной ситуации проще обойтись макросом для excel
tor45 вне форума Ответить с цитированием
Старый 22.11.2018, 14:34   #13
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

если идем строго внизу-вверх. Вариант как база
Код:
Option Explicit
Dim startRow As Integer
Sub Work()
    Dim C As String
    Dim D As String
    Dim B As String
    Dim Lvl As Byte
    [G10] = [C27]: [h10] = [d27]
    C = [G10]
    D = [h10]
    Dim rCount As Integer
    startRow = -1
    rCount = Cells(Rows.Count, "B").End(xlUp).Row
    Do While rCount > 0 And startRow = -1
        If Cells(rCount, "C") = C And Cells(rCount, "D") = D Then startRow = rCount
        rCount = rCount - 1
    Loop
    If startRow = -1 Then Exit Sub
    B = Cells(startRow, "B")
    Lvl = 1
    Do While Left(B, 3) <> "MXG"
        B = Cells(startRow, "B")
        [h10].Offset(, Lvl) = GetChain(startRow)
        Lvl = Lvl + 1
    Loop
End Sub

Function GetChain(ByRef start As Integer)
    Dim chainText As String
    Dim tmp As String
    chainText = Cells(start, "B")
    
    Do While Cells(start, "A") = "" And start >= 0
        start = start - 1
    Loop
    
    If Left(chainText, 3) = "MXG" Then
        GetChain = Cells(start, "A") & " " & chainText
    Else
    
    tmp = Cells(start, "A")
    Do While Cells(start, "C") <> tmp And start >= 0
        start = start - 1
    Loop
    GetChain = Cells(start, "C") & " " & Cells(start, "D") & " " & chainText
End If
End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.11.2018, 14:45   #14
tor45
Пользователь
 
Регистрация: 13.11.2018
Сообщений: 17
По умолчанию

спасибо большое! поразбираюсь попробую сам теперь))
tor45 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, не составить формулу. SonicMine Microsoft Office Excel 0 01.04.2014 12:45
Макрос выбора определенных ячеек для подставления в формулу vfr800 Microsoft Office Excel 0 29.01.2012 02:54
Нужна помощь составить формулу или ВБА для дат KOSTIK1 Microsoft Office Excel 7 05.01.2010 11:19
Помогите составить формулу !!!! kutt Microsoft Office Excel 4 24.05.2008 11:44