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

Вход

Регистрация

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

 

= Мир MS Excel/Выборка из трех листов EXCEL в 4 лист - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выборка из трех листов EXCEL в 4 лист
StePler_PAV Дата: Понедельник, 25.09.2017, 20:39 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Поместить в серый квадрат кнопку, по нажатии которой, сотрудникам, отработавшим более 3 лет на лист "Результат" будет выведена минимальная зарплата.
К сообщению приложен файл: 1346081.xls (77.5 Kb)
 
Ответить
СообщениеПоместить в серый квадрат кнопку, по нажатии которой, сотрудникам, отработавшим более 3 лет на лист "Результат" будет выведена минимальная зарплата.

Автор - StePler_PAV
Дата добавления - 25.09.2017 в 20:39
RAN Дата: Понедельник, 25.09.2017, 21:03 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не убирается. Влезает только кнопка с зарплатой президента.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе убирается. Влезает только кнопка с зарплатой президента.

Автор - RAN
Дата добавления - 25.09.2017 в 21:03
KuklP Дата: Понедельник, 25.09.2017, 21:09 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
StePler_PAV, и Вам здрасьте. Это кому Вы тут приказы раздаете?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеStePler_PAV, и Вам здрасьте. Это кому Вы тут приказы раздаете?

Автор - KuklP
Дата добавления - 25.09.2017 в 21:09
Hugo Дата: Понедельник, 25.09.2017, 21:10 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Предполагаю что просто кинул задания на несколько форумов - где-нибудь может сделают. И даже не парится поздороваться или сказать спасибо за решение.
А может решение даже и не смотрел...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПредполагаю что просто кинул задания на несколько форумов - где-нибудь может сделают. И даже не парится поздороваться или сказать спасибо за решение.
А может решение даже и не смотрел...

Автор - Hugo
Дата добавления - 25.09.2017 в 21:10
StePler_PAV Дата: Понедельник, 25.09.2017, 21:11 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
С алгоритмом хотя бы подскажите
Моя наработка!

[vba]
Код
Sub Премия_от_3_лет()
    'Определяем кто отработал больше 3 лет
    i = 2
    j = 2
    k = 5
    Do While Sheets("Исходные данные 3").Cells(i, 2) <> ""
        If Sheets("Исходные данные 3").Cells(i, 2) > 3 Then
            n = Sheets("Исходные данные 3").Cells(i, 1)
                Do Until n = Sheets("Исходные данные 1").Cells(j, 4)
                    Sheets("Результат").Cells(k, 1) = Sheets("Исходные данные 1").Cells(j, 1)
                    j = j + 1
                Loop
                
                ''If n = Sheets("Исходные данные 1").Cells(j, 4) Then
                 ''   Sheets("Результат").Cells(k, 4) = Sheets("Исходные данные 1").Cells(j, 1)
               ' Else
               '     j = j + 1
               ' End If
        End If
        i = i + 1
    Loop

    
End Sub
[/vba]
[vba][code][/code][/vba]


Сообщение отредактировал StePler_PAV - Понедельник, 25.09.2017, 21:27
 
Ответить
СообщениеС алгоритмом хотя бы подскажите
Моя наработка!

[vba]
Код
Sub Премия_от_3_лет()
    'Определяем кто отработал больше 3 лет
    i = 2
    j = 2
    k = 5
    Do While Sheets("Исходные данные 3").Cells(i, 2) <> ""
        If Sheets("Исходные данные 3").Cells(i, 2) > 3 Then
            n = Sheets("Исходные данные 3").Cells(i, 1)
                Do Until n = Sheets("Исходные данные 1").Cells(j, 4)
                    Sheets("Результат").Cells(k, 1) = Sheets("Исходные данные 1").Cells(j, 1)
                    j = j + 1
                Loop
                
                ''If n = Sheets("Исходные данные 1").Cells(j, 4) Then
                 ''   Sheets("Результат").Cells(k, 4) = Sheets("Исходные данные 1").Cells(j, 1)
               ' Else
               '     j = j + 1
               ' End If
        End If
        i = i + 1
    Loop

    
End Sub
[/vba]
[vba][code][/code][/vba]

Автор - StePler_PAV
Дата добавления - 25.09.2017 в 21:11
Hugo Дата: Понедельник, 25.09.2017, 21:16 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Я б на словарях делал. Двух.
А Вам сперва нужно научиться обращаться с форумами.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Понедельник, 25.09.2017, 21:16
 
Ответить
СообщениеЯ б на словарях делал. Двух.
А Вам сперва нужно научиться обращаться с форумами.

Автор - Hugo
Дата добавления - 25.09.2017 в 21:16
StePler_PAV Дата: Понедельник, 25.09.2017, 21:29 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Все исправил! По перебору нахожу сотрудника который отработал больше 3х лет! Копирую его номер!
Я б на словарях делал. Двух.
А Вам сперва нужно научиться обращаться с форумами.

Вы имеете в виду - на 2 листах?
 
Ответить
СообщениеВсе исправил! По перебору нахожу сотрудника который отработал больше 3х лет! Копирую его номер!
Я б на словарях делал. Двух.
А Вам сперва нужно научиться обращаться с форумами.

Вы имеете в виду - на 2 листах?

Автор - StePler_PAV
Дата добавления - 25.09.2017 в 21:29
Hugo Дата: Понедельник, 25.09.2017, 21:37 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Нет. На двух словарях.
Но можете представить это как два листа - сперва на один записываем всех кто отработал сколько нужно (достаточно только номер), затем на другой записываем тех, кто есть (номером) на первом, с подразделением.
Затем второй дополняем всем остальным (месяцем и зарплатой), если есть что дополнять, с проверкой суммы на минимальность.
Ну и в итоге переписываем собранное на итоговый лист. Из словаря. Но в принципе можно использовать и листы, как я сейчас понял - наличие и позицию можно проверять функциями листа :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Понедельник, 25.09.2017, 21:37
 
Ответить
СообщениеНет. На двух словарях.
Но можете представить это как два листа - сперва на один записываем всех кто отработал сколько нужно (достаточно только номер), затем на другой записываем тех, кто есть (номером) на первом, с подразделением.
Затем второй дополняем всем остальным (месяцем и зарплатой), если есть что дополнять, с проверкой суммы на минимальность.
Ну и в итоге переписываем собранное на итоговый лист. Из словаря. Но в принципе можно использовать и листы, как я сейчас понял - наличие и позицию можно проверять функциями листа :)

Автор - Hugo
Дата добавления - 25.09.2017 в 21:37
StePler_PAV Дата: Понедельник, 25.09.2017, 23:26 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Мне главное подскажите алгоритм действия - дальше попытаюсь разобраться сам!
 
Ответить
СообщениеМне главное подскажите алгоритм действия - дальше попытаюсь разобраться сам!

Автор - StePler_PAV
Дата добавления - 25.09.2017 в 23:26
sboy Дата: Вторник, 26.09.2017, 13:17 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Если словари не знаете (как и я), то можно вот так
[vba]
Код
Sub Кнопка1_Щелчок()
     'Определяем кто отработал больше 3 лет
    i = 2
    j = 2
    k = 4
    Dim arr_(1 To 6)

    Do While Sheets("Исходные данные 3").Cells(i, 2) <> ""
        If Sheets("Исходные данные 3").Cells(i, 2) > 3 Then
            l = Sheets("Исходные данные 3").Cells(i, 2)
            n = Sheets("Исходные данные 3").Cells(i, 1)
            With Sheets("Исходные данные 1")
                Set nom = .Range("D2:D272").Find(what:=n, lookat:=xlWhole)
                    If Not nom Is Nothing Then
                        arr_(1) = WorksheetFunction.Trim(.Cells(nom.Row, 1) & " " & .Cells(nom.Row, 2) & " " & .Cells(nom.Row, 3))
                        arr_(2) = n
                        arr_(3) = .Cells(nom.Row, 5)
                        arr_(4) = l
                    End If
             End With
                Min_zp = 99 ^ 99
                With Sheets("Исходные данные 2").Range("A2:A272")
                    Set c = .Find(what:=arr_(1), lookat:=xlWhole)
                    If Not c Is Nothing Then
                        firstAddress = c.Address
                        Do
                            If c.Offset(0, 2) < Min_zp Then
                    Min_zp = c.Offset(0, 2)
                    mes = c.Offset(0, 1)
                            End If
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> firstAddress
                    End If
                    arr_(5) = mes
                    arr_(6) = Min_zp
                End With
         Sheets("Результат").Cells(k, 1).Resize(1, 6) = arr_
         k = k + 1
         End If
    i = i + 1
    Loop

End Sub
[/vba]
К сообщению приложен файл: 0657874.xls (94.5 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеЕсли словари не знаете (как и я), то можно вот так
[vba]
Код
Sub Кнопка1_Щелчок()
     'Определяем кто отработал больше 3 лет
    i = 2
    j = 2
    k = 4
    Dim arr_(1 To 6)

    Do While Sheets("Исходные данные 3").Cells(i, 2) <> ""
        If Sheets("Исходные данные 3").Cells(i, 2) > 3 Then
            l = Sheets("Исходные данные 3").Cells(i, 2)
            n = Sheets("Исходные данные 3").Cells(i, 1)
            With Sheets("Исходные данные 1")
                Set nom = .Range("D2:D272").Find(what:=n, lookat:=xlWhole)
                    If Not nom Is Nothing Then
                        arr_(1) = WorksheetFunction.Trim(.Cells(nom.Row, 1) & " " & .Cells(nom.Row, 2) & " " & .Cells(nom.Row, 3))
                        arr_(2) = n
                        arr_(3) = .Cells(nom.Row, 5)
                        arr_(4) = l
                    End If
             End With
                Min_zp = 99 ^ 99
                With Sheets("Исходные данные 2").Range("A2:A272")
                    Set c = .Find(what:=arr_(1), lookat:=xlWhole)
                    If Not c Is Nothing Then
                        firstAddress = c.Address
                        Do
                            If c.Offset(0, 2) < Min_zp Then
                    Min_zp = c.Offset(0, 2)
                    mes = c.Offset(0, 1)
                            End If
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> firstAddress
                    End If
                    arr_(5) = mes
                    arr_(6) = Min_zp
                End With
         Sheets("Результат").Cells(k, 1).Resize(1, 6) = arr_
         k = k + 1
         End If
    i = i + 1
    Loop

End Sub
[/vba]

Автор - sboy
Дата добавления - 26.09.2017 в 13:17
  • Страница 1 из 1
  • 1
Поиск:

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