Умовно додайте зображення до бульбашкової діаграми? [зачинено]


1

Мені потрібно масово створювати бульбашкові діаграми для великого набору груп однолітків, де кожен графік показує анонімізовані дані групи однолітків, але підкреслює групу інтересів за допомогою логотипу їх команди. Я хотів би автоматизувати це за допомогою VBA, але мені цікаво, чи можливо навіть умовно додати зображення до міхура, що цікавить кожен графік? Зараз це ручний процес і займає досить багато часу.

Наприклад, у графіку 1 команда A - команда, що цікавить, і їх логотип на міхурі, а решта бульбашки мають однаковий колір. На графіку 2 команда B - команда за інтересами тощо.


спробуйте захопити макрос, роблячи це вручну. Якщо ви можете записати це, а також ви можете чітко визначити умови, то це, безумовно, можна зробити за допомогою VBA.
Máté Juhász

Дякую, друже. Я спробував це, але це вибір цікавої бульбашки, до якої слід застосувати логотип, який мене повісив. З макросу бульбашки виглядають як присвоєне число, але навіть якщо я важко закодував номери в VBA, мені доведеться повторювати його щомісяця для врахування нових і змін даних.
smac

розміщуємо макрос і деякі зразкові дані, і, можливо, ми можемо допомогти виправити це.
Máté Juhász

Відповіді:


0

Я не можу залишити коментар. Але частина проблеми полягає в тому, що ви щоразу регенеруєте дані та графіки. Тож рішення використовувати, як правило, "непряме". Вирішіть більш просту задачу.

Чи можете у вас бути прихований аркуш, на якому є всі логотипи. Поруч з логотипами - номер, який відповідає цьому логотипу (або логотип, або ім'я файлу логотипу).

Далі напишіть макрос, який, якщо ці числа є правильними, призначає потрібний вам логотип (тобто ви просто оновите цей аркуш і використовуєте цей аркуш як свій масив у VBA).

Нарешті, якщо ви надсилаєте аркуш, ви оновлюєте лише один логотип ONE, я б зробив цю частину імені файлу (і використовую його у формулі) або помістив би її у більш помітну комірку. Тоді ваш зв’язок робиться. Одна зміна в цій комірці, натисніть на макрос, і вам добре піти.

Не бачивши трохи більше коду, з яким ви працюєте. Я не можу надати більше допомоги.


Дякую за це, @captainkirk! Я бачу, куди ви їдете з цим, і спробую. Я ще не запустив VBA, але планую на цей тиждень і продовжуватиму далі.
smac

0

Я зрозумів це. Почалося з необхідності встановлення моїх даних із двох визначених серій, де одна серія є цікавою групою, а друга - групою однолітків, а потім умовно заповнити клітини в моїй таблиці даних на основі групи. Налаштування зайняло багато часу, щоб розібратися і виглядає вичерпно в наведених нижче інструкціях, але насправді це не так вже й погано.

Знімок налаштування таблиці

Все, виділене синім кольором, - це формула, тож ось, як я це зробив:

  1. У колонці B я використав формулу, щоб визначити, який ряд - це: = IF (A5 <> A $ 1, "Peers", "Group")
  2. Введено мої значення X і Y (стовпці C і D).
  3. Встановити розмір міхура (стовпець Е) для автоматичного регулювання на основі серії: = ЯКЩО (А5 = А 1,1000,250 дол. США)
  4. Використовуються стовпці F і G для обрізки десяткових знаків.
  5. У стовпцях H до L відображаються фактичні налаштування рядів даних на основі того, група є одноранговою чи групою, що цікавить.
  6. Значення X завжди залишатимуться однаковими, тому я пов’язав стовпець H з вихідним значенням осі X: = C5
  7. У стовпці I виводиться відповідне значення Y, якщо це група однолітків: = IF ($ B5 = $ I3, $ D5, NA ())
  8. У стовпці J встановлюється розмір міхура групи однолітків: = ЯКЩО (ISNA ($ I5), NA (), $ E5)
  9. У стовпці K виводиться відповідне значення Y, якщо це група інтересів: = IF ($ B5 = $ K $ 3, $ D5, NA ())
  10. У стовпці L встановлюється розмір міхура групи інтересів: = ЯКЩО (ISNA ($ K5), NA (), $ E5)
  11. У стовпці M встановлюються рівні розміри бульбашок і використовуються для створення остаточного діаграми, де всі групи та їх логотипи відображаються разом.
  12. Клітини O4 (= VLOOKUP (A1, логотипи! A: B, 2, FALSE)) і P4 (= IF (O4 = 1, "group1", IF (O4 = 2, "group2", IF (O4 = 3, ") group3 ", IF (O4 = 4," group4 "))))) ідентифікуйте та введіть правильний логотип, коли вибрана група інтересів.

Потім мені довелося налаштувати і зв’язати всі свої логотипи / зображення на окремій вкладці ("Логотипи"). Відео YouTube Oz du Soleil на тему "Вибір зображення на основі значення комірки" надзвичайно допомогло досягти цього. У мене недостатньо репутації, щоб розмістити пряме посилання.

Я створив і відформатував свої бульбашкові діаграми, після чого вибрав дані, необхідні для кожної серії, використовуючи стовпці H (вісь X), I / K (вісь Y) та J / L (вісь Z для розміру міхура).

Для моєї повної діаграми логотипу групи мені знадобилася лише одна серія, оскільки всі бульбашки були б однакового розміру. Я використовував стовпці C, D і M для осей X, Y і Z відповідно. Потім я застосував логотип кожної групи до відповідних бульбашок.

Сам код після налаштування виявився досить прямим:

Dim i As Long
Dim iLastRow As Long
Dim Cells As Range

'This section looks up each group name on the tab and cycles through the loop
Application.ScreenUpdating = False

With ActiveSheet
    iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = 4 To iLastRow - 1 'Group names start in A5

        'Selects, copies, and pastes the next group name in the list
        Sheets("Groups").Select
        ActiveSheet.Cells(i + 1, 1).Copy
        Range("A1").Select
            Selection.PasteSpecial paste:=xlPasteValues

        'Selects, copies, and pastes the group logo onto the bubble
        ActiveSheet.Shapes.Range(Array("Picture 7")).Select
            Selection.CopyPicture xlScreen, xlPicture
        ActiveSheet.ChartObjects("Chart 6").Activate
        ActiveChart.FullSeriesCollection(2).Select
            Selection.paste

        'Variables needed for directory and file names
        GroupName = Sheets("Groups").Range("A1")
        yearmo = Sheets("Groups").Range("A2")

        'Will create a new folder for the final images if it doesn't already exist
        If Len(Dir("DirPath\" & yearmo, vbDirectory)) = 0 Then
        MkDir "DirPath\" & yearmo
        End If

        'Set up image file names
        Dim NewFileName As String
        NewFileName = "\" & yearmo & " - " & GroupName & " - X_Y.jpg"

        'Selects and saves the bubble chart as a JPG
        ActiveChart.ChartArea.Select
        ActiveChart.Export "DirPath\" & yearmo & NewFileName

    Next i
End With

    'After all individual bubble have been created, need to
    'set up state file name to generate image with all logos for the state
    Dim StateFileName As String
    StateFileName = "\" & yearmo & " - STATE - X_Y.jpg"

    'Selects and saves the state bubble chart as a JPG
    ActiveSheet.ChartObjects("Chart 4").Activate
    ActiveChart.Export "DirPath\" & yearmo & StateFileName

Населений міхурний графік

Я відмовився від використання міток у діаграмі, тому що намагатися змусити їх динамічно розміщуватися не здавалося вартим зусиль. Я замість цього пішов із створення пов'язаних текстових полів під діаграмою.

Сподіваємось, це допомагає іншим; це, безумовно, величезна економія часу від оновлень вручну.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.