Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Excel подстановка данных из одной ячейки, исходя из расположения курсора.

Дмитрий К Ученик (91), на голосовании 3 месяца назад
Добрый день, помоги пожалуйста, ну никак не могу победить Excel.
Нужно чтоб при "наступлении" на ячейку В7 или вообще на любую ячейку 7-ой строки, выдавалась (в ячейке E2) сумма ячеек D7 и E7.
Но при "наступлении" на ячейку из 6-ой строки в ячейке E2 выдавалась сумма соответственно D6 и E6 и так по всем строкам.
Готов оплатить на мороженное .
Такое вообще возможно в Excel ?
Голосование за лучший ответ
Роман Кияненко Мастер (1326) 4 месяца назад
попробуй спросить у ChadGPT, там есть бесплатные запросы
Рустам Абдрашитов Мудрец (11001) 4 месяца назад
Добрый вечер! В Excel можно реализовать подобное поведение с помощью VBA (Visual Basic for Applications). К сожалению, стандартные функции Excel не позволяют изменять значения в одной ячейке в зависимости от того, на какую ячейку вы наводите курсор. Однако с помощью VBA можно создать макрос, который будет выполнять вашу задачу.

Вот шаги, как это сделать:

## Шаг 1: Открытие редактора VBA

1. Откройте Excel.
2. Нажмите `Alt + F11`, чтобы открыть редактор VBA.
3. В редакторе VBA найдите ваше рабочее пространство в левой части окна (обычно называется "VBAProject (ваш_файл.xlsx)").
4. Дважды щелкните на "Лист1" (или тот лист, на котором вы хотите применить макрос).

## Шаг 2: Вставка кода

Скопируйте и вставьте следующий код в окно кода:

```vba
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rowNum As Long
If Not Intersect(Target, Me.Rows(7)) Is Nothing Then
rowNum = 7
ElseIf Not Intersect(Target, Me.Rows(6)) Is Nothing Then
rowNum = 6
ElseIf Not Intersect(Target, Me.Rows(5)) Is Nothing Then
rowNum = 5
ElseIf Not Intersect(Target, Me.Rows(4)) Is Nothing Then
rowNum = 4
ElseIf Not Intersect(Target, Me.Rows(3)) Is Nothing Then
rowNum = 3
ElseIf Not Intersect(Target, Me.Rows(2)) Is Nothing Then
rowNum = 2
Else
Exit Sub
End If

' Суммируем значения в ячейках D и E выбранной строки и выводим в E2
Me.Range("E2").Value = Me.Cells(rowNum, "D").Value + Me.Cells(rowNum, "E").Value
End Sub
```

## Шаг 3: Сохранение и тестирование

1. Закройте редактор VBA, нажав `Alt + Q` или просто закройте окно.
2. Вернитесь в Excel и сохраните файл в формате, поддерживающем макросы, например, `.xlsm`.
3. Теперь, когда вы будете щелкать на ячейки в строках 2-7, в ячейке E2 будет отображаться сумма значений из соответствующих ячеек D и E.

## Важно

- Убедитесь, что в вашем Excel включены макросы. Если они отключены, код не будет работать.
- Если вы хотите, чтобы код работал только для определенных строк, вы можете изменить условия в коде.

Теперь вы сможете получать сумму значений в ячейке E2 в зависимости от того, на какую ячейку вы наведете курсор. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!
бабуин гибонович Оракул (52725) 4 месяца назад
Здравствуйте! В Excel можно реализовать желаемое поведение с помощью макроса на VBA. Вот как это можно сделать:

1. Нажмите `Alt + F11`, чтобы открыть редактор VBA.
2. В редакторе найдите ваш лист в проекте (обычно это `Sheet1` или другой лист, на котором вы работаете).
3. Дважды щелкните на название листа, чтобы открыть окно кода для этого листа.
4. Вставьте следующий код:

```vba
 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Not Intersect(Target, Me.Range("B6:E9")) Is Nothing Then
Dim rowNumber As Long
rowNumber = Target.Row
If rowNumber >= 6 And rowNumber <= 9 Then
Me.Range("E2").Value = Me.Cells(rowNumber, 4).Value + Me.Cells(rowNumber, 5).Value
End If
End If
End Sub

```

5. Закройте редактор VBA и вернитесь в Excel.

Теперь, когда вы выбираете любую ячейку в диапазоне `B6:E9`, в ячейке `E2` будет отображаться сумма значений в колонках `D` и `E` для соответствующей строки.

Пожалуйста, проверьте, работает ли это как вам нужно!
Дмитрий КУченик (91) 4 месяца назад
Я в таблице нарисовал всего 5-ть строк. А на самом деле таблица состоит из 3000 строк. Поэтому и стоит такая задача.
бабуин гибонович Оракул (52725) Дмитрий К, Понял вас, решение с использованием VBA может быть адаптировано для работы с большим количеством строк. В вашем случае можно настроить макрос таким образом, чтобы он обрабатывал все 3000 строк. Вот обновленный код, который будет работать для таблицы из 3000 строк:
бабуин гибоновичОракул (52725) 4 месяца назад
 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Not Intersect(Target, Me.Range("B6:E3005")) Is Nothing Then
Dim rowNumber As Long
rowNumber = Target.Row
If rowNumber >= 6 And rowNumber <= 3005 Then
Me.Range("E2").Value = Me.Cells(rowNumber, 4).Value + Me.Cells(rowNumber, 5).Value
End If
End If
End Sub
бабуин гибоновичОракул (52725) 4 месяца назад
Этот код работает следующим образом:

Он проверяет, попадает ли выбранная ячейка в диапазон B6:E3005.
Если выбранная ячейка находится в этом диапазоне, код определяет номер строки и суммирует значения ячеек в колонках D и E для этой строки.
Результат этой суммы выводится в ячейке E2.

Этот код должен корректно работать для всех 3000 строк в вашей таблице.

Проверьте, пожалуйста, и сообщите, если возникнут какие-то проблемы или вопросы!
Serj Diff Просветленный (44689) 4 месяца назад
И на кой чёрт нужно применять макросы, ломающие нормальную работу Excel'я и которые могут привести к падению программы, если можно просто и быстро подсчитать суммы сразу по всем строкам ?
Дмитрий КУченик (91) 4 месяца назад
Доброй ночи, применить хочется на тот ляд, что быстро и просто это можно подсчитать и вывести в конец таблицы , куда придется крутить прокруткой, и пока доберешься до этого результата, уже забудешь что в начале. было. Я пытаюсь сделать Дашборд. На снимке таблица куда будут вводиться данные вручную. А дальше будут Итоги на основании введенных данных, такие как : Итог сделки, соотношении риска, Полученный процент, проторгованная сумма, уплаченный процент ... И так далее, порядка десятка итоговых результатов. Конечно, все это легко считается и подставляется дальше по таблице, но как уже говорилось ранее, пока долистаешь уже не увидишь начало.
Хотелось конечно, наступить на строку и на верху красиво высвечивались основные расчеты, итог сделки в виде диаграмки, % сделки и т.д.
Serj Diff Просветленный (44689) Дмитрий К,
применить хочется на тот ляд, что быстро и просто это можно подсчитать и вывести в конец таблицы , куда придется крутить прокруткой, и пока доберешься до этого результата, уже забудешь что в начале. было
А, тоесть крутить до 3875 строки, чтобы на неё нажать - то что было в начале не забудется, а "вывести в конец" - забудется ? Интересная у вас память... Боюсь, тут никакой Excel не поможет. И, собственно, зачем в конец то ? Рядышком кто мешает подсчитать ?!
Я пытаюсь сделать Дашборд.
А при чём тут клацание мышкой для суммы и дашборд ?! Хоспади... Дашборд делают на отдельном листе, когда всё подсчитано. И, как-бы, таблички с данными, как у тебя на скриншоте, на дашборды кидать не принято. Только графическая информация.
Похожие вопросы