Выделить карту в Excel на основе раскрывающегося списка в Excel

Содержание

Вот хитрый трюк для людей, использующих карты в Excel. В этом блоге я объясню, как выделить карту в Excel на основе раскрывающегося списка.

Я взял редактируемую карту США. Идея состоит в том, чтобы выделить штат в США, когда его название выбирается из раскрывающегося списка.

Что-то вроде того, что показано на картинке ниже:

Теперь, прежде чем я покажу вам код, вот несколько предварительных условий для этого трюка.

  1. Получите редактируемую карту США, на которой вы можете выбрать различные фигуры, которые хотите выделить
  2. Создайте список всех 50 состояний в одном столбце, и в столбце справа я написал State 1, State 2 и т. Д.
  3. Назовите каждую фигуру на карте. Например, у меня здесь 50 фигур для 50 состояний, и я назвал каждую фигуру как «Состояние 1», «Состояние 2», «Состояние 3» и так далее… Для этого выберите любую фигуру и перейдите в поле «Имя», которое находится на слева от строки формул, и введите его имя из столбца State Number. Например, я выбрал Алабаму и назвал ее Штат 1.
  4. Создайте раскрывающийся список Excel с именами всех состояний (в данном случае $ B $ 2).
  5. Используйте функцию Vlookup для извлечения номера состояния, когда состояние выбирается из раскрывающегося списка. Вот формула, которую я использовал в ячейке $ B $ 3
    = ВПР (B2, 'Список состояний'! $ B $ 3: $ C $ 52,2, FALSE)
Код для выделения карты в Excel
Private Sub Worksheet_Change (ByVal Target As Range) Dim N As Integer Dim ShapeName As String N = ActiveSheet.Shapes.count If Target.Address = "$ B $ 2" Then For i = 1 to N ShapeName = ActiveSheet.Shapes (i). Name If Left (ShapeName, 6) = "State" Затем ActiveSheet.Shapes (i) .Select With Selection.ShapeRange.Fill .Visible = msoFalse .Transparency = 1 End With End If Next i StateNumber = Range ("$ B $ 3" ) .Value ActiveSheet.Shapes (StateNumber) .Select With Selection.ShapeRange.Fill .Visible = msoTrue .Visible = msoTrue .ForeColor.RGB = RGB (192, 0, 0) .Transparency = 0 .Solid End With ActiveSheet.Range ( "$ B $ 2"). Выберите End If End Sub

Следуйте этим простым шагам при вставке этого кода

  1. Сначала щелкните правой кнопкой мыши вкладку листа с картой и выберите «Просмотреть код». Это откроет редактор VB.
  2. Вставьте код.
wave wave wave wave wave