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

Вход

Регистрация

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

 

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

Старая форма входа
Мир MS Excel » Записи участника » krosav4ig [2347]
Результаты поиска
krosav4ig Дата: Среда, 14.05.2014, 15:10 | Сообщение № 2301 | Тема: Отображение количество транспорта взятого из другой листа
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а я тут намудрил с объединенными ячейками
К сообщению приложен файл: 3297296-1.xls (34.5 Kb)


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

Сообщение отредактировал krosav4ig - Среда, 14.05.2014, 15:21
 
Ответить
Сообщениеа я тут намудрил с объединенными ячейками

Автор - krosav4ig
Дата добавления - 14.05.2014 в 15:10
krosav4ig Дата: Среда, 14.05.2014, 12:29 | Сообщение № 2302 | Тема: создание формул при условии ЕСЛИ
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
чучундра, регистрируйтесь, прикладывайте пример.
хотя...
может так. В C1 формула
Код
=B1*ВЫБОР(ПСТР(КОДСИМВ(ЛЕВСИМВ(A1));2;1)-1;0,06;0,2)


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

Сообщение отредактировал krosav4ig - Четверг, 15.05.2014, 10:10
 
Ответить
Сообщениечучундра, регистрируйтесь, прикладывайте пример.
хотя...
может так. В C1 формула
Код
=B1*ВЫБОР(ПСТР(КОДСИМВ(ЛЕВСИМВ(A1));2;1)-1;0,06;0,2)

Автор - krosav4ig
Дата добавления - 14.05.2014 в 12:29
krosav4ig Дата: Среда, 14.05.2014, 11:52 | Сообщение № 2303 | Тема: Заморозка ячейек.
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
_Boroda_, да... че-то я подтупливаю %)
исправил формулы во 2м посте.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение_Boroda_, да... че-то я подтупливаю %)
исправил формулы во 2м посте.

Автор - krosav4ig
Дата добавления - 14.05.2014 в 11:52
krosav4ig Дата: Вторник, 13.05.2014, 22:19 | Сообщение № 2304 | Тема: Массовое изменение параметров гиперссылок
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как-то так
К сообщению приложен файл: 17.xlsm (14.4 Kb)


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

Автор - krosav4ig
Дата добавления - 13.05.2014 в 22:19
krosav4ig Дата: Вторник, 13.05.2014, 21:52 | Сообщение № 2305 | Тема: Массовое изменение параметров гиперссылок
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Пример в студию deal


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеПример в студию deal

Автор - krosav4ig
Дата добавления - 13.05.2014 в 21:52
krosav4ig Дата: Вторник, 13.05.2014, 21:23 | Сообщение № 2306 | Тема: Заморозка ячейек.
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
выделить столбец A данные->проверка данных->
тип данных: другой, формула:
Код
=И(ДЛСТР(A1)<=4;Ч(A1)>0)

или тип данных целое число
минимум: 1
максимум:
Код
=10^4-1

выделить столбец C данные->проверка данных->тип данных: другой, формула
Код
=И(ДЛСТР(C1)<=13;Ч(C1)>0)

или тип данных: целое число
минимум: 1
максимум:
Код
=10^13-1

выделить столбец G данные->проверка данных->тип данных: другой, формула:
Код
=ДЛСТР(G1)<=17

если в столбце G нужна точная маска ввода как у вас в 3 пункте в скобках, то формула:
Код
=И(ЕЧИСЛО(ПСТР(G1;1;4)*ПСТР(G1;6;1)*ПСТР(G1;8;13));ПСТР(G1;5;1)="-";ПСТР(G1;7;1)="/";ДЛСТР(G1)=17)


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

Сообщение отредактировал krosav4ig - Среда, 14.05.2014, 11:53
 
Ответить
Сообщениевыделить столбец A данные->проверка данных->
тип данных: другой, формула:
Код
=И(ДЛСТР(A1)<=4;Ч(A1)>0)

или тип данных целое число
минимум: 1
максимум:
Код
=10^4-1

выделить столбец C данные->проверка данных->тип данных: другой, формула
Код
=И(ДЛСТР(C1)<=13;Ч(C1)>0)

или тип данных: целое число
минимум: 1
максимум:
Код
=10^13-1

выделить столбец G данные->проверка данных->тип данных: другой, формула:
Код
=ДЛСТР(G1)<=17

если в столбце G нужна точная маска ввода как у вас в 3 пункте в скобках, то формула:
Код
=И(ЕЧИСЛО(ПСТР(G1;1;4)*ПСТР(G1;6;1)*ПСТР(G1;8;13));ПСТР(G1;5;1)="-";ПСТР(G1;7;1)="/";ДЛСТР(G1)=17)

Автор - krosav4ig
Дата добавления - 13.05.2014 в 21:23
krosav4ig Дата: Понедельник, 12.05.2014, 19:07 | Сообщение № 2307 | Тема: Удалить строки по условию если в ячейке 0
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
AlexK, он и сейчас не сохранился, он остался в вашей личной книге макросов PERSONAL.XLSB :)
и да, сохранять или xlsm или xls


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

Сообщение отредактировал krosav4ig - Понедельник, 12.05.2014, 19:08
 
Ответить
СообщениеAlexK, он и сейчас не сохранился, он остался в вашей личной книге макросов PERSONAL.XLSB :)
и да, сохранять или xlsm или xls

Автор - krosav4ig
Дата добавления - 12.05.2014 в 19:07
krosav4ig Дата: Понедельник, 12.05.2014, 18:57 | Сообщение № 2308 | Тема: Удалить строки по условию если в ячейке 0
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Private Sub del_0()
      Dim rng As Range
      With ThisWorkbook.Worksheets("день").Range("C:C")
          Set rng = .Find(0, , LookIn:=xlValues, lookat:=xlWhole)
          If Not rng Is Nothing Then
              Do
                  rng.EntireRow.Delete
                  Set rng = .FindNext()
              Loop While Not rng Is Nothing
          End If
      End With
End Sub
[/vba]
К сообщению приложен файл: 3948024.xlsm (16.6 Kb)


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

Сообщение отредактировал krosav4ig - Понедельник, 12.05.2014, 18:58
 
Ответить
Сообщение[vba]
Код
Private Sub del_0()
      Dim rng As Range
      With ThisWorkbook.Worksheets("день").Range("C:C")
          Set rng = .Find(0, , LookIn:=xlValues, lookat:=xlWhole)
          If Not rng Is Nothing Then
              Do
                  rng.EntireRow.Delete
                  Set rng = .FindNext()
              Loop While Not rng Is Nothing
          End If
      End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 12.05.2014 в 18:57
krosav4ig Дата: Понедельник, 12.05.2014, 11:14 | Сообщение № 2309 | Тема: Условное форматирование выходных дней
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Ну дык ставьте kingsoft office и будет вам счастье. :) Kingsoft office free(google play) англ. условное форматирование в нем вполне себе нормально работает. Если нужна русская версия, то выбирайте тут. А про VBA на Android пока остается только мечтать.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеНу дык ставьте kingsoft office и будет вам счастье. :) Kingsoft office free(google play) англ. условное форматирование в нем вполне себе нормально работает. Если нужна русская версия, то выбирайте тут. А про VBA на Android пока остается только мечтать.

Автор - krosav4ig
Дата добавления - 12.05.2014 в 11:14
krosav4ig Дата: Понедельник, 12.05.2014, 04:43 | Сообщение № 2310 | Тема: Условное форматирование выходных дней
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Shylo, Какое ПО стоит у вас на планшете, какая ось


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеShylo, Какое ПО стоит у вас на планшете, какая ось

Автор - krosav4ig
Дата добавления - 12.05.2014 в 04:43
krosav4ig Дата: Понедельник, 12.05.2014, 04:14 | Сообщение № 2311 | Тема: Быстрый подсчет количества и сумм
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как-то так
К сообщению приложен файл: 1791639.xlsx (11.3 Kb)


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

Сообщение отредактировал krosav4ig - Понедельник, 12.05.2014, 05:05
 
Ответить
Сообщениекак-то так

Автор - krosav4ig
Дата добавления - 12.05.2014 в 04:14
krosav4ig Дата: Понедельник, 12.05.2014, 02:45 | Сообщение № 2312 | Тема: Запрет выбора аналогичных значений в последовательном списк
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
небольшая поправка: в диапазоне O76:O85 формулу нужно заменить на
Код
=ТЕКСТ(ИНДЕКС(ЕСЛИОШИБКА(ПОДСТАВИТЬ($M$76:$M$85;ИНДЕКС($E$39:$E$44;ПОИСКПОЗ($M$76:$M$85;$E$39:$E$44;0));" ");$M$76:$M$85); ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); СТРОКА($A:$A)); СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); 0));"")

Serge_007, скажите пожалуйста можно ли эти первые две формулы объединить в одну?

Graceless, ради интереса заглянул в ваш макрос...
у меня возникли большие сомнения по поводу строки
[vba]
Код
If Target.Count > 1 Then Target.Delete
[/vba]
чтобы было понятнее переведу ее на руссий язык
[vba]
Код
ЕСЛИ в выделенном диапазоне более 1 ячейки ТО удалить первую ячейку выделенного диапазона со сдвигом влево
[/vba]
дело в том, что в Range("E39:G41") все ячейки являются частью объединенного диапазона и привыборе любой из них на этой строке кода будет происходить удаление

заглянул в module1 и мне стало как-то непосебе :)
настоятельно рекомендую все что там написано заменить на чтото типа этого
[vba]
Код
Sub Clear_all()
      ActiveSheet.Unprotect
      Application.ScreenUpdating = False
          Dim rngs As Variant
          Dim rng, rng2 As Range
          rngs = Array("B39", "C4", "H4", "C6", "C7", "C8", "C9", "C10", "C12", _
              "C13", "H12", "H8", "C17", "E17:H19", "C21", "E21:H23", "C25", "E25:H31", _
              "C39", "E39:H44", "D49:D54", "D56:D58", "B62:E62", "B63:E63", "B66:E66", _
              "B67:E67", "H33:H37", "F62:I62", "F67:I67", "D64:E64", "D68:E68", "H64:I64", _
              "C2")
          Set rng = Range(rngs(0))
          Dim i As Integer
          For i = 0 To UBound(rngs)
              For Each cell In Range(rngs(i))
                  If cell.MergeCells Then
                      Set rng = Union(rng, cell.MergeArea)
                  Else
                      Set rng = Union(rng, cell)
                  End If
              Next
          Next
          rng.ClearContents
      Application.ScreenUpdating = True
      ActiveSheet.Protect
End Sub
[/vba]

и еще несколько слов про использование Worksheet_Change, Workbook_SheetChange, Worksheet_SelectionChange, Workbook_SheetSelectionChange

Worksheet_Change, Workbook_SheetChange - это процедуры, которые выполняются при любом изменении ячеек листа. Worksheet_Change запускается только при изменении на листе, в модуль которого она прописана, если она прописана не в модуль листа, оно работать не будет. Workbook_SheetChange запускается при изменениии на любом листе и эта процедура должна быть прописана в модуль книги (в вашем случае ЦяКнига). Если не планируется, что в книге будет множество однотипных листов, то я бы посоветовал перенести эту процедуру в модуль листа.

та же картина и с Worksheet_SelectionChange, Workbook_SheetSelectionChange
Worksheet_SelectionChange запускается при изменении адреса активной ячейки в том листе, в модуль которого она прописана. Workbook_SheetSelectionChange запускается при изменении адреса активной ячейки в любом листе и точно так же как и Workbook_SheetChange должна быть прописана в модуль книги (в вашем случае ЦяКнига). И так же если не планируется, что в книге будет множество однотипных листов, то я бы посоветовал перенести эту процедуру в модуль листа.
К сообщению приложен файл: 8454538.xlsm (43.8 Kb)


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

Сообщение отредактировал krosav4ig - Понедельник, 12.05.2014, 02:48
 
Ответить
Сообщениенебольшая поправка: в диапазоне O76:O85 формулу нужно заменить на
Код
=ТЕКСТ(ИНДЕКС(ЕСЛИОШИБКА(ПОДСТАВИТЬ($M$76:$M$85;ИНДЕКС($E$39:$E$44;ПОИСКПОЗ($M$76:$M$85;$E$39:$E$44;0));" ");$M$76:$M$85); ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); СТРОКА($A:$A)); СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); 0));"")

Serge_007, скажите пожалуйста можно ли эти первые две формулы объединить в одну?

Graceless, ради интереса заглянул в ваш макрос...
у меня возникли большие сомнения по поводу строки
[vba]
Код
If Target.Count > 1 Then Target.Delete
[/vba]
чтобы было понятнее переведу ее на руссий язык
[vba]
Код
ЕСЛИ в выделенном диапазоне более 1 ячейки ТО удалить первую ячейку выделенного диапазона со сдвигом влево
[/vba]
дело в том, что в Range("E39:G41") все ячейки являются частью объединенного диапазона и привыборе любой из них на этой строке кода будет происходить удаление

заглянул в module1 и мне стало как-то непосебе :)
настоятельно рекомендую все что там написано заменить на чтото типа этого
[vba]
Код
Sub Clear_all()
      ActiveSheet.Unprotect
      Application.ScreenUpdating = False
          Dim rngs As Variant
          Dim rng, rng2 As Range
          rngs = Array("B39", "C4", "H4", "C6", "C7", "C8", "C9", "C10", "C12", _
              "C13", "H12", "H8", "C17", "E17:H19", "C21", "E21:H23", "C25", "E25:H31", _
              "C39", "E39:H44", "D49:D54", "D56:D58", "B62:E62", "B63:E63", "B66:E66", _
              "B67:E67", "H33:H37", "F62:I62", "F67:I67", "D64:E64", "D68:E68", "H64:I64", _
              "C2")
          Set rng = Range(rngs(0))
          Dim i As Integer
          For i = 0 To UBound(rngs)
              For Each cell In Range(rngs(i))
                  If cell.MergeCells Then
                      Set rng = Union(rng, cell.MergeArea)
                  Else
                      Set rng = Union(rng, cell)
                  End If
              Next
          Next
          rng.ClearContents
      Application.ScreenUpdating = True
      ActiveSheet.Protect
End Sub
[/vba]

и еще несколько слов про использование Worksheet_Change, Workbook_SheetChange, Worksheet_SelectionChange, Workbook_SheetSelectionChange

Worksheet_Change, Workbook_SheetChange - это процедуры, которые выполняются при любом изменении ячеек листа. Worksheet_Change запускается только при изменении на листе, в модуль которого она прописана, если она прописана не в модуль листа, оно работать не будет. Workbook_SheetChange запускается при изменениии на любом листе и эта процедура должна быть прописана в модуль книги (в вашем случае ЦяКнига). Если не планируется, что в книге будет множество однотипных листов, то я бы посоветовал перенести эту процедуру в модуль листа.

та же картина и с Worksheet_SelectionChange, Workbook_SheetSelectionChange
Worksheet_SelectionChange запускается при изменении адреса активной ячейки в том листе, в модуль которого она прописана. Workbook_SheetSelectionChange запускается при изменении адреса активной ячейки в любом листе и точно так же как и Workbook_SheetChange должна быть прописана в модуль книги (в вашем случае ЦяКнига). И так же если не планируется, что в книге будет множество однотипных листов, то я бы посоветовал перенести эту процедуру в модуль листа.

Автор - krosav4ig
Дата добавления - 12.05.2014 в 02:45
krosav4ig Дата: Воскресенье, 11.05.2014, 02:46 | Сообщение № 2313 | Тема: Запрет выбора аналогичных значений в последовательном списк
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Написанные мной формулы - формулы массива. Чтобы их ввести, нужно выделить диапазон, в строку формул ввести фомулу без фигурных скобок и нажать ctrl±shift+enter


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеНаписанные мной формулы - формулы массива. Чтобы их ввести, нужно выделить диапазон, в строку формул ввести фомулу без фигурных скобок и нажать ctrl±shift+enter

Автор - krosav4ig
Дата добавления - 11.05.2014 в 02:46
krosav4ig Дата: Вторник, 06.05.2014, 15:47 | Сообщение № 2314 | Тема: Заливка ячеек по двойному клику
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Alex_ST, о том самом :)
Просто я исходя из уровня владения VBA топик-стартера решил все-таки написать пример реализации предложенного вами алгоритма, к тому же при использовании цикла в решении этой задачи есть пара нюансов, которые могут ввести в ступор новичка в программировании. В данном случае это невозможность использования обычного Else и необходимость выхода из цикла при срабатывании условия. Ну вот как-то так :) .

ant6729, я бы вам посоветовал для начала изучить синтаксис основных конструкций vba, типы данных и объектную модель excel (с общими сведениями объектной модели можно ознакомится по ссылке), на форуме есть раздел, где можно скачать справочники по excel и vba.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеAlex_ST, о том самом :)
Просто я исходя из уровня владения VBA топик-стартера решил все-таки написать пример реализации предложенного вами алгоритма, к тому же при использовании цикла в решении этой задачи есть пара нюансов, которые могут ввести в ступор новичка в программировании. В данном случае это невозможность использования обычного Else и необходимость выхода из цикла при срабатывании условия. Ну вот как-то так :) .

ant6729, я бы вам посоветовал для начала изучить синтаксис основных конструкций vba, типы данных и объектную модель excel (с общими сведениями объектной модели можно ознакомится по ссылке), на форуме есть раздел, где можно скачать справочники по excel и vba.

Автор - krosav4ig
Дата добавления - 06.05.2014 в 15:47
krosav4ig Дата: Понедельник, 05.05.2014, 19:11 | Сообщение № 2315 | Тема: Заливка ячеек по двойному клику
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

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

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      colors = Array(vbWhite, vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite)
      Cancel = True
      With Target.Interior
          For i = 0 To UBound(colors)
              If .Color = colors(i) Then
                  .Color = colors(i + 1)
                  Exit For
              ElseIf i = UBound(colors) Then .Color = colors(0)
              End If
          Next
      End With
End Sub
[/vba]

и так

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Words = Array("Рыба", "Кот", "Сметана", "Рыба")
      Cancel = True
      With Target
          For i = 0 To UBound(Words)
              If .Value = Words(i) Then
                  .Value = Words(i + 1)
                  Exit For
              ElseIf i = UBound(Words) Then .Value = Words(1)
              End If
          Next
      End With
End Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Понедельник, 05.05.2014, 19:11
 
Ответить
Сообщениеа можно так?

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      colors = Array(vbWhite, vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite)
      Cancel = True
      With Target.Interior
          For i = 0 To UBound(colors)
              If .Color = colors(i) Then
                  .Color = colors(i + 1)
                  Exit For
              ElseIf i = UBound(colors) Then .Color = colors(0)
              End If
          Next
      End With
End Sub
[/vba]

и так

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Words = Array("Рыба", "Кот", "Сметана", "Рыба")
      Cancel = True
      With Target
          For i = 0 To UBound(Words)
              If .Value = Words(i) Then
                  .Value = Words(i + 1)
                  Exit For
              ElseIf i = UBound(Words) Then .Value = Words(1)
              End If
          Next
      End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 05.05.2014 в 19:11
krosav4ig Дата: Воскресенье, 04.05.2014, 04:43 | Сообщение № 2316 | Тема: Запрет выбора аналогичных значений в последовательном списк
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
да и весь код процедуры MannagerList я бы переписал как-то так
[vba]
Код
Sub MannagerList(Mang As Integer)
      Dim AA As Variant
      ActiveSheet.Unprotect
      AA = Array("Organization and planning", "Decision-making", _
          "Team building, management And development", "Delegation and control", _
          "Leadership and motivation", "Strategic thinking")
' "Manual_Worker", "Professional":
      If Mang = 0 Then
          Range("E39:E45").Value = " "
          ' Range("E46").Value = " "
          Range("B39").Value = "Professional Competencies"
          Range("D42:I44").RowHeight = 0
          'Range("D44:I46").Select
          'Range("D44:I46").Select
          ' Selection.RowHeight = 0
      ' Уставновка
          With Range("E39:E44").Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                 Operator:=xlBetween, Formula1:="=List"
         End With
      'Установка в начало
          Range("E40").Select
          Range("D39").Value = 1
          Range("D40").Value = 2
          Range("D41").Value = 3
      ElseIf Mang = 1 Then
' Manager
          For i = 0 To 5
              Range("E" & 39 + i).Value = AA(i)
          Next
      'Range("E46").Value = A7
          Range("B39").Value = "Managerial Competencies"
      ' Высота строк
          Range("D40:I46").RowHeight = 14
      ' Очистка данных проверки
          With Range("E39:E46").Validation
              .Delete
              .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, _
                  Operator:=xlBetween
          End With
      ' Установка в текущее положение
          Range("E40").Select
          For i = 1 To 6
              Range("D" & 38 + i).Value = i
          Next
      ElseIf Mang = -1 Then
' *************************************************************************
' Пустое значение
' *************************************************************************
          Range("B39").Value = ""
          Range("D39:D44").Value = ""
          Range("E39:E44").Value = ""
      End If
' Следующее поле для заполнения после выбора типа
       Range("C6").Select
       ActiveSheet.Protect
End Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Воскресенье, 04.05.2014, 04:55
 
Ответить
Сообщениеда и весь код процедуры MannagerList я бы переписал как-то так
[vba]
Код
Sub MannagerList(Mang As Integer)
      Dim AA As Variant
      ActiveSheet.Unprotect
      AA = Array("Organization and planning", "Decision-making", _
          "Team building, management And development", "Delegation and control", _
          "Leadership and motivation", "Strategic thinking")
' "Manual_Worker", "Professional":
      If Mang = 0 Then
          Range("E39:E45").Value = " "
          ' Range("E46").Value = " "
          Range("B39").Value = "Professional Competencies"
          Range("D42:I44").RowHeight = 0
          'Range("D44:I46").Select
          'Range("D44:I46").Select
          ' Selection.RowHeight = 0
      ' Уставновка
          With Range("E39:E44").Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                 Operator:=xlBetween, Formula1:="=List"
         End With
      'Установка в начало
          Range("E40").Select
          Range("D39").Value = 1
          Range("D40").Value = 2
          Range("D41").Value = 3
      ElseIf Mang = 1 Then
' Manager
          For i = 0 To 5
              Range("E" & 39 + i).Value = AA(i)
          Next
      'Range("E46").Value = A7
          Range("B39").Value = "Managerial Competencies"
      ' Высота строк
          Range("D40:I46").RowHeight = 14
      ' Очистка данных проверки
          With Range("E39:E46").Validation
              .Delete
              .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, _
                  Operator:=xlBetween
          End With
      ' Установка в текущее положение
          Range("E40").Select
          For i = 1 To 6
              Range("D" & 38 + i).Value = i
          Next
      ElseIf Mang = -1 Then
' *************************************************************************
' Пустое значение
' *************************************************************************
          Range("B39").Value = ""
          Range("D39:D44").Value = ""
          Range("E39:E44").Value = ""
      End If
' Следующее поле для заполнения после выбора типа
       Range("C6").Select
       ActiveSheet.Protect
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 04.05.2014 в 04:43
krosav4ig Дата: Воскресенье, 04.05.2014, 04:42 | Сообщение № 2317 | Тема: Запрет выбора аналогичных значений в последовательном списк
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
проблема №1 вариант с дополнительными столбцами

в ячейку M85 поставить два пробела
в диапазоне N76:N85 формула
Код
{=СТРОКА()-ЕСЛИ(ЕСЛИОШИБКА(ПОДСТАВИТЬ($M$76:$M$85;ИНДЕКС($E$39:$E$44;ПОИСКПОЗ($M$76:$M$85;$E$39:$E$44;0));"");$M$76:$M$85)<>"";75;65)}

в диапазоне O76:O85 формула
Код
{=ТЕКСТ(ИНДЕКС(ЕСЛИОШИБКА(ПОДСТАВИТЬ($M$76:$M$85;ИНДЕКС($E$39:$E$44;ПОИСКПОЗ($M$76:$M$85;$E$39:$E$44;0));"");$M$76:$M$85); ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); СТРОКА($A:$A)); СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); 0));"")}

создать именованный диапазон с именем List и диапазоном
Код
=СМЕЩ($O$76:$O$86;0;0;еслиошибка(ПОИСКПОЗ(" ";$O$76:$O$86;0);ПОИСКПОЗ("  ";$O$76:$O$86;0));1)

в процедуре MannagerList заменить [vba]
Код
Formula1:="=$M$76:$M$85"
[/vba] на [vba]
Код
Formula1:="=List"
[/vba]

Проблема №2

в макросе перед строкой [vba]
Код
A1 = "Organization and planning"
[/vba]
добавить строку [vba]
Код
ActiveSheet.Unprotect
[/vba]
и после строки [vba]
Код
Range("C6").Select
[/vba]
добавить строку [vba]
Код
ActiveSheet.Protect
[/vba]

ЗЫ

в процедуре Workbook_SheetChange я бы посоветовал заменить [vba]
Код
Select Case CStr(target)
          Case "_": MannagerList (-1)
          Case "Manager": MannagerList (1)
          Case "Manual_Worker", "Professional": MannagerList (0)
End Select
[/vba] на
[vba]
Код
If Not Intersect(target, Range("H4:I5")) Is Nothing Then
       Select Case CStr(target)
              Case "_": MannagerList (-1)
              Case "Manager": MannagerList (1)
              Case "Manual_Worker", "Professional": MannagerList (0)
       End Select
End If
[/vba]


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

Сообщение отредактировал krosav4ig - Воскресенье, 04.05.2014, 04:46
 
Ответить
Сообщениепроблема №1 вариант с дополнительными столбцами

в ячейку M85 поставить два пробела
в диапазоне N76:N85 формула
Код
{=СТРОКА()-ЕСЛИ(ЕСЛИОШИБКА(ПОДСТАВИТЬ($M$76:$M$85;ИНДЕКС($E$39:$E$44;ПОИСКПОЗ($M$76:$M$85;$E$39:$E$44;0));"");$M$76:$M$85)<>"";75;65)}

в диапазоне O76:O85 формула
Код
{=ТЕКСТ(ИНДЕКС(ЕСЛИОШИБКА(ПОДСТАВИТЬ($M$76:$M$85;ИНДЕКС($E$39:$E$44;ПОИСКПОЗ($M$76:$M$85;$E$39:$E$44;0));"");$M$76:$M$85); ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); СТРОКА($A:$A)); СЧЁТЕСЛИ($N$76:$N$85; "<"&$N$76:$N$85); 0));"")}

создать именованный диапазон с именем List и диапазоном
Код
=СМЕЩ($O$76:$O$86;0;0;еслиошибка(ПОИСКПОЗ(" ";$O$76:$O$86;0);ПОИСКПОЗ("  ";$O$76:$O$86;0));1)

в процедуре MannagerList заменить [vba]
Код
Formula1:="=$M$76:$M$85"
[/vba] на [vba]
Код
Formula1:="=List"
[/vba]

Проблема №2

в макросе перед строкой [vba]
Код
A1 = "Organization and planning"
[/vba]
добавить строку [vba]
Код
ActiveSheet.Unprotect
[/vba]
и после строки [vba]
Код
Range("C6").Select
[/vba]
добавить строку [vba]
Код
ActiveSheet.Protect
[/vba]

ЗЫ

в процедуре Workbook_SheetChange я бы посоветовал заменить [vba]
Код
Select Case CStr(target)
          Case "_": MannagerList (-1)
          Case "Manager": MannagerList (1)
          Case "Manual_Worker", "Professional": MannagerList (0)
End Select
[/vba] на
[vba]
Код
If Not Intersect(target, Range("H4:I5")) Is Nothing Then
       Select Case CStr(target)
              Case "_": MannagerList (-1)
              Case "Manager": MannagerList (1)
              Case "Manual_Worker", "Professional": MannagerList (0)
       End Select
End If
[/vba]

Автор - krosav4ig
Дата добавления - 04.05.2014 в 04:42
krosav4ig Дата: Среда, 30.04.2014, 18:49 | Сообщение № 2318 | Тема: Скролл пустых строк вплоть до 65556 строки - как убрать?
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
А удалял делитом или удалением строки?


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

Автор - krosav4ig
Дата добавления - 30.04.2014 в 18:49
krosav4ig Дата: Среда, 30.04.2014, 01:05 | Сообщение № 2319 | Тема: Создание таблицы по заданным параметрам
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Ну вот как-то так.
[p.s.]я там со скуки немного поигрался с условным форматированием и галочками на первом листе :)
К сообщению приложен файл: demo3-3.xlsm (62.8 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеНу вот как-то так.
[p.s.]я там со скуки немного поигрался с условным форматированием и галочками на первом листе :)

Автор - krosav4ig
Дата добавления - 30.04.2014 в 01:05
krosav4ig Дата: Вторник, 29.04.2014, 01:32 | Сообщение № 2320 | Тема: Создание таблицы по заданным параметрам
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
В моем файле как раз это и реализовано. В макросе qwe() lek это количество часов лекций, lab это количество часов лабораторных, stud это количество студентов. При запуске этого макроса лист шаблон копируется и в скопированном листе таблицы подгоняются под заданные параметры. Запустить его можно с вкладки разработчик, посмотреть код макроса можно нажав alt+f11, все макросы в моем файле находятся в module1 в разделе modules.
[p.s.]если на ленте нет вкладки разработчик, то как ее включить можно почитать тут


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

Сообщение отредактировал krosav4ig - Вторник, 29.04.2014, 13:55
 
Ответить
СообщениеВ моем файле как раз это и реализовано. В макросе qwe() lek это количество часов лекций, lab это количество часов лабораторных, stud это количество студентов. При запуске этого макроса лист шаблон копируется и в скопированном листе таблицы подгоняются под заданные параметры. Запустить его можно с вкладки разработчик, посмотреть код макроса можно нажав alt+f11, все макросы в моем файле находятся в module1 в разделе modules.
[p.s.]если на ленте нет вкладки разработчик, то как ее включить можно почитать тут

Автор - krosav4ig
Дата добавления - 29.04.2014 в 01:32
Мир MS Excel » Записи участника » krosav4ig [2347]
Поиск:

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