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

Вход

Регистрация

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

 

= Мир MS Excel/Данные в ячейке по условию - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Данные в ячейке по условию
Андреич Дата: Суббота, 03.01.2015, 18:15 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый вечер. Всех с Новым годом!!!
Подскажите пожалуйста как реализовать следующую задачу.
Суть вопроса: Есть ячейка 1, в нее пользователь вносит данные. Но, если в другой ячейке 2 выбрано определенное условие, то в первой выводится строго определенное значение. Надеюсь в прикрепленном файле все понятно объяснил.
К сообщению приложен файл: 2412698.xls (22.5 Kb)


...пожарные выехали в ту же ночь...
 
Ответить
СообщениеДобрый вечер. Всех с Новым годом!!!
Подскажите пожалуйста как реализовать следующую задачу.
Суть вопроса: Есть ячейка 1, в нее пользователь вносит данные. Но, если в другой ячейке 2 выбрано определенное условие, то в первой выводится строго определенное значение. Надеюсь в прикрепленном файле все понятно объяснил.

Автор - Андреич
Дата добавления - 03.01.2015 в 18:15
Nic70y Дата: Суббота, 03.01.2015, 18:30 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 9145
Репутация: 2417 ±
Замечаний: 0% ±

Excel 2010
Так надо?[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("g11")) Is Nothing Then
     If [g11] = "ДА" Then [i11] = 0
End If
End Sub
[/vba]
К сообщению приложен файл: 14.xls (44.0 Kb)


ЮMoney 41001841029809
 
Ответить
СообщениеТак надо?[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("g11")) Is Nothing Then
     If [g11] = "ДА" Then [i11] = 0
End If
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 03.01.2015 в 18:30
Андреич Дата: Суббота, 03.01.2015, 18:42 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо!
Я так понимаю, это макрос? Никогда с ними не связывался.
Может ли он отрицательно сказаться (утяжелить и затормозить) на всей таблице?
Таблица, заполняется в течении года, состоит из 500 строк и в каждой строке содержится несколько ячеек к которым нужно применить данный макрос.


...пожарные выехали в ту же ночь...
 
Ответить
СообщениеСпасибо!
Я так понимаю, это макрос? Никогда с ними не связывался.
Может ли он отрицательно сказаться (утяжелить и затормозить) на всей таблице?
Таблица, заполняется в течении года, состоит из 500 строк и в каждой строке содержится несколько ячеек к которым нужно применить данный макрос.

Автор - Андреич
Дата добавления - 03.01.2015 в 18:42
Nic70y Дата: Суббота, 03.01.2015, 19:02 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 9145
Репутация: 2417 ±
Замечаний: 0% ±

Excel 2010
в каждой строке содержится несколько ячеек к которым нужно
надо подход менять.
но наверное сначала тему перенести в vba (если хотите с макросами)
попросите модератов - пусть перенесут.
[moder]Не надо ничего переносить, можно здесь отвечать[/moder]
и более приближенный к реальности файл не помешал бы.
Цитата
утяжелить и затормозить
думаю не затормозит


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Суббота, 03.01.2015, 19:12
 
Ответить
Сообщение
в каждой строке содержится несколько ячеек к которым нужно
надо подход менять.
но наверное сначала тему перенести в vba (если хотите с макросами)
попросите модератов - пусть перенесут.
[moder]Не надо ничего переносить, можно здесь отвечать[/moder]
и более приближенный к реальности файл не помешал бы.
Цитата
утяжелить и затормозить
думаю не затормозит

Автор - Nic70y
Дата добавления - 03.01.2015 в 19:02
Андреич Дата: Воскресенье, 04.01.2015, 09:06 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вот файл. Суть таблицы такова: Наступило событие (пожар) и пользователь заполняет необходимые данные.
Если в ячейке I6 выбрано значение "ДА" то в ячейках М6:Р6 должно автоматом прописаться значение 0 (ноль).
Если в ячейке J6 выбрано значение "ДА" то только в ячейке М6 должен стоять 0.
И так нужно предусмотреть для всего количества строк в таблице.
К сообщению приложен файл: _2015_-.xls (82.5 Kb)


...пожарные выехали в ту же ночь...

Сообщение отредактировал Андреич - Воскресенье, 04.01.2015, 09:07
 
Ответить
СообщениеВот файл. Суть таблицы такова: Наступило событие (пожар) и пользователь заполняет необходимые данные.
Если в ячейке I6 выбрано значение "ДА" то в ячейках М6:Р6 должно автоматом прописаться значение 0 (ноль).
Если в ячейке J6 выбрано значение "ДА" то только в ячейке М6 должен стоять 0.
И так нужно предусмотреть для всего количества строк в таблице.

Автор - Андреич
Дата добавления - 04.01.2015 в 09:06
JayBhagavan Дата: Воскресенье, 04.01.2015, 09:40 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 27 ±
Замечаний: 0% ±

Excel 2010
Андреич, в примере все именованные диапазоны не рабочие - это так, замечание.
Если в ячейке I6 и J6 выбрано значение "ДА", то что?
Если в ячейке J6 выбрано значение "ДА", то только в ячейке М6 должен стоять 0, а в остальных (N6:P6) что должно быть?


Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
 
Ответить
СообщениеАндреич, в примере все именованные диапазоны не рабочие - это так, замечание.
Если в ячейке I6 и J6 выбрано значение "ДА", то что?
Если в ячейке J6 выбрано значение "ДА", то только в ячейке М6 должен стоять 0, а в остальных (N6:P6) что должно быть?

Автор - JayBhagavan
Дата добавления - 04.01.2015 в 09:40
Андреич Дата: Воскресенье, 04.01.2015, 10:10 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Там все работает, просто для уменьшения веса файла пришлось поудалять все. Поправил маленько.
Одновременно в I6 и J6 значение ДА не может быть выбрано (либо/либо).
Если J6 = "ДА" то N6:P6 доступны для внесения данных.
К сообщению приложен файл: 2848154.xls (99.0 Kb)


...пожарные выехали в ту же ночь...
 
Ответить
СообщениеТам все работает, просто для уменьшения веса файла пришлось поудалять все. Поправил маленько.
Одновременно в I6 и J6 значение ДА не может быть выбрано (либо/либо).
Если J6 = "ДА" то N6:P6 доступны для внесения данных.

Автор - Андреич
Дата добавления - 04.01.2015 в 10:10
JayBhagavan Дата: Воскресенье, 04.01.2015, 10:23 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 27 ±
Замечаний: 0% ±

Excel 2010
Андреич, тогда думаю, что стоит автоматом убирать лишнее "ДА", ибо человеческий фактор. Подумаю - макросом. :)


Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
 
Ответить
СообщениеАндреич, тогда думаю, что стоит автоматом убирать лишнее "ДА", ибо человеческий фактор. Подумаю - макросом. :)

Автор - JayBhagavan
Дата добавления - 04.01.2015 в 10:23
JayBhagavan Дата: Воскресенье, 04.01.2015, 11:56 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 27 ±
Замечаний: 0% ±

Excel 2010
Тестируйте. (всё что за пределами таблицы очистил для уменьшения размера файла)[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim range_population As Range, range_minions As Range, range_num As Range, range_num_population As Range, range_num_minions As Range, str_yes$, row_start!
      row_start! = 6
      Set range_population = Range("I" & row_start! & ":I" & [A:A].Rows.Count)
      Set range_minions = Range("J" & row_start! & ":J" & [A:A].Rows.Count)
      Set range_num = Range("M" & row_start! & ":P" & [A:A].Rows.Count)
      Set range_num_population = range_num
      Set range_num_minions = Range("M" & row_start! & ":M" & [A:A].Rows.Count)
      str_yes$ = "ДА"
      If ((Not Intersect(Target, range_population) Is Nothing) Or _
         (Not Intersect(Target, range_minions) Is Nothing) Or _
         (Not Intersect(Target, range_num) Is Nothing)) And _
         Target.Count = 1 Then
         With Application: .EnableEvents = False: .ScreenUpdating = False: End With
          If (Not Intersect(Target, range_population) Is Nothing) And (UCase(Target.Value) = str_yes$) Then
              range_minions.Resize(1).Offset(Target.Row - row_start!).Value = Empty
              range_num_population.Resize(1).Offset(Target.Row - row_start!).Value = 0
          ElseIf (Not Intersect(Target, range_minions) Is Nothing) And (UCase(Target.Value) = str_yes$) Then
              range_population.Resize(1).Offset(Target.Row - row_start!).Value = Empty
              range_num_minions.Resize(1).Offset(Target.Row - row_start!).Value = 0
          ElseIf Not Intersect(Target, range_num) Is Nothing Then
              If (UCase(range_population.Resize(1).Offset(Target.Row - row_start!).Value) = str_yes$) Then
                  range_num_population.Resize(1).Offset(Target.Row - row_start!).Value = 0
              ElseIf (UCase(range_minions.Resize(1).Offset(Target.Row - row_start!).Value) = str_yes$) Then
                  range_num_minions.Resize(1).Offset(Target.Row - row_start!).Value = 0
              End If
          End If
          Application.EnableEvents = True
      End If
      Set range_population = Nothing
      Set range_minions = Nothing
      Set range_num = Nothing
      Set range_num_population = Nothing
      Set range_num_minions = Nothing
End Sub
[/vba]
К сообщению приложен файл: 1238721.xls (83.0 Kb)


Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
 
Ответить
СообщениеТестируйте. (всё что за пределами таблицы очистил для уменьшения размера файла)[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim range_population As Range, range_minions As Range, range_num As Range, range_num_population As Range, range_num_minions As Range, str_yes$, row_start!
      row_start! = 6
      Set range_population = Range("I" & row_start! & ":I" & [A:A].Rows.Count)
      Set range_minions = Range("J" & row_start! & ":J" & [A:A].Rows.Count)
      Set range_num = Range("M" & row_start! & ":P" & [A:A].Rows.Count)
      Set range_num_population = range_num
      Set range_num_minions = Range("M" & row_start! & ":M" & [A:A].Rows.Count)
      str_yes$ = "ДА"
      If ((Not Intersect(Target, range_population) Is Nothing) Or _
         (Not Intersect(Target, range_minions) Is Nothing) Or _
         (Not Intersect(Target, range_num) Is Nothing)) And _
         Target.Count = 1 Then
         With Application: .EnableEvents = False: .ScreenUpdating = False: End With
          If (Not Intersect(Target, range_population) Is Nothing) And (UCase(Target.Value) = str_yes$) Then
              range_minions.Resize(1).Offset(Target.Row - row_start!).Value = Empty
              range_num_population.Resize(1).Offset(Target.Row - row_start!).Value = 0
          ElseIf (Not Intersect(Target, range_minions) Is Nothing) And (UCase(Target.Value) = str_yes$) Then
              range_population.Resize(1).Offset(Target.Row - row_start!).Value = Empty
              range_num_minions.Resize(1).Offset(Target.Row - row_start!).Value = 0
          ElseIf Not Intersect(Target, range_num) Is Nothing Then
              If (UCase(range_population.Resize(1).Offset(Target.Row - row_start!).Value) = str_yes$) Then
                  range_num_population.Resize(1).Offset(Target.Row - row_start!).Value = 0
              ElseIf (UCase(range_minions.Resize(1).Offset(Target.Row - row_start!).Value) = str_yes$) Then
                  range_num_minions.Resize(1).Offset(Target.Row - row_start!).Value = 0
              End If
          End If
          Application.EnableEvents = True
      End If
      Set range_population = Nothing
      Set range_minions = Nothing
      Set range_num = Nothing
      Set range_num_population = Nothing
      Set range_num_minions = Nothing
End Sub
[/vba]

Автор - JayBhagavan
Дата добавления - 04.01.2015 в 11:56
RAN Дата: Воскресенье, 04.01.2015, 12:46 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Count > 1 Then Exit Sub
     If Target.Column = 9 Then
         If Len(Target.Offset(, 1)) Then
             Application.EnableEvents = False
             Application.Undo
             Application.EnableEvents = True
             Exit Sub
         End If
         Target.Offset(, 4).Resize(, 4) = 0
     ElseIf Target.Column = 10 Then
         If Len(Target.Offset(, -1)) Then
             Application.EnableEvents = False
             Application.Undo
             Application.EnableEvents = True
             Exit Sub
         End If
         Target.Offset(, 3) = 0
     End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Count > 1 Then Exit Sub
     If Target.Column = 9 Then
         If Len(Target.Offset(, 1)) Then
             Application.EnableEvents = False
             Application.Undo
             Application.EnableEvents = True
             Exit Sub
         End If
         Target.Offset(, 4).Resize(, 4) = 0
     ElseIf Target.Column = 10 Then
         If Len(Target.Offset(, -1)) Then
             Application.EnableEvents = False
             Application.Undo
             Application.EnableEvents = True
             Exit Sub
         End If
         Target.Offset(, 3) = 0
     End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 04.01.2015 в 12:46
Андреич Дата: Воскресенье, 04.01.2015, 13:50 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Боюсь - это слишком сложно для такой задачи. Всем спасибо.


...пожарные выехали в ту же ночь...
 
Ответить
СообщениеБоюсь - это слишком сложно для такой задачи. Всем спасибо.

Автор - Андреич
Дата добавления - 04.01.2015 в 13:50
Richman Дата: Воскресенье, 04.01.2015, 22:54 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 54 ±
Замечаний: 0% ±

Excel 2007
Андреич, Есть вариант через условное форматирование реализовать: главная----условное форматирование---создать правило---использовать формулу для определения...

Код
=J6="ДА"
и где формат... выбираете (все форматы)---Тип:

Код
"0"


После этого чтобы не пытались вводить в ячейку, все равно ноль отобразиться, если же ДА не пропишут, то все норм будет. Правда если это нужно только для отображения, а не в расчетах
К сообщению приложен файл: 0378837.xlsx (8.3 Kb)


С Уважением, Richman

 
Ответить
СообщениеАндреич, Есть вариант через условное форматирование реализовать: главная----условное форматирование---создать правило---использовать формулу для определения...

Код
=J6="ДА"
и где формат... выбираете (все форматы)---Тип:

Код
"0"


После этого чтобы не пытались вводить в ячейку, все равно ноль отобразиться, если же ДА не пропишут, то все норм будет. Правда если это нужно только для отображения, а не в расчетах

Автор - Richman
Дата добавления - 04.01.2015 в 22:54
JayBhagavan Дата: Понедельник, 05.01.2015, 11:08 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 27 ±
Замечаний: 0% ±

Excel 2010
RAN, снимаю шляпу - лаконично у Вас.


Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
 
Ответить
СообщениеRAN, снимаю шляпу - лаконично у Вас.

Автор - JayBhagavan
Дата добавления - 05.01.2015 в 11:08
  • Страница 1 из 1
  • 1
Поиск:

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