#excel #vba
#excel #vba
Вопрос:
Я хотел бы вставить маленький значок звезды (или изображение звезды) в ячейку, которая имеет наибольшее значение по сравнению с другими ячейками. Например, я хотел бы иметь звездочку в ячейке A2, заменив номер с наибольшим значением. Итак, вместо 19 должна быть звездочка. Есть ли какой-либо способ добиться этого с помощью vba или условного форматирования?
Ответ №1:
Учитывая, что вы упомянули условное форматирование, это можно сделать без VBA. Учитывая диапазон на вашем изображении, вы можете настроить правило условного форматирования, которое применяется к этому диапазону:
- Правило должно применяться к вашему диапазону (A2: F2).
- Вы должны использовать форматирование только тех ячеек, которые содержат правило.
- Вы должны выбрать значение ячейки, равное
=MAX($A$2:$F$2)
- При указании форматирования, которое должно быть применено, выберите пользовательское форматирование чисел и используйте
*
(обратная косая черта для буквенной звездочки).
Вы получаете несколько преимуществ от использования этого подхода:
- Вы сохраняете исходное значение.
- Вам не нужен VBA, поэтому вы можете продолжать сохранять это как обычную книгу.
- По теме № 1: Проще изменить правило (например, использовать символ, отличный от звездочки, или сделать звездочку более заметной, или отобразить число со звездочкой).
Комментарии:
1. я действительно ценю ответ. Но, как я уже упоминал, я хотел бы вставить в ячейку изображение звезды, значок или даже каракули, а не символ звездочки. Есть ли какое-нибудь решение для этого?
2. @anis: Насколько мне известно, условное форматирование не позволяет размещать изображение в ячейке. Хотя я бы поставил под сомнение преимущество использования изображения поверх звездочки, которую вы можете стилизовать по своему усмотрению (изменить цвет, шрифт и т.д.) Если вам абсолютно необходимо изображение вместо буквенной звездочки, вы, вероятно, могли бы переработать одно из решений других пользователей для добавления изображения. Но код будет более сложным, вероятно, ему придется иметь дело с
Shape
объектами.
Ответ №2:
Если вы хотите заменить значение (удалив значение и изменив его на *), вы можете найти максимальное значение в вашем диапазоне, затем для каждой ячейки, имеющей это максимальное значение, измените значение на *.
Например :
Dim myRange As Range
Dim maxvalue As Double
'Set your range to whatever it needs to be
Set myRange = *whatever*
'Find the maximum value in your range
maxvalue = Application.WorksheetFunction.Max(myRange)
For Each mCell In myRange.Cells
If mCell.Value = maxvalue Then
mCell.Value = "*"
End If
Next mCell
Комментарии:
1. я действительно ценю ответ. Но, как я уже упоминал, я хотел бы вставить в ячейку изображение звезды или значок или даже рисунок, а не символ звездочки. Есть ли какое-либо решение для этого? Потому что я пробовал этот код и добавлял изображение в ячейку, но это работает не так, как я хотел.
2. Вы можете отображать изображение в ячейке, в противном случае я предполагаю, что вы не можете
3. Я пытался использовать
mCell.Value = ActiveSheet.Pictures.Insert("Q:...star.png")
, но расположение изображения не в ячейке. Она просто появляется в любом месте листа.4. Вы должны указать позицию в Excel, вы найдете пример здесь .
5. но не могли бы вы, пожалуйста, показать мне, как применить приведенный выше пример в вашем коде? Я действительно новичок в VBA, поэтому я не очень хорошо знаком с этим.
Ответ №3:
Вы могли бы попробовать:
Option Explicit
Sub LoopingThroughTable()
Dim tbl As ListObject
Dim i As Long, MaxValue As Double
Dim FoundCell As Range
'Set the table
Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")
'Loop Through Every Row in Table
With tbl
For i = 1 To .DataBodyRange.Rows.Count
'Get the max value
MaxValue = WorksheetFunction.Max(.ListRows(i).Range)
'Find in which column max value appears
Set FoundCell = .DataBodyRange.Rows(i).Find(MaxValue, LookIn:=xlValues, LookAt:=xlWhole)
'Change the value
.DataBodyRange(i, FoundCell.Column).Value = "*"
Next i
End With
End Sub
Комментарии:
1. я действительно ценю ответ. Но, как я уже упоминал, я хотел бы вставить в ячейку изображение звезды или значок или даже рисунок, а не символ звездочки. Есть ли какое-либо решение для этого?