Как я составляю таблицу Excel, которая вытягивает данные из нескольких листов? [закрытый]

Следующая UDF извлечет все, что вы вводите, в список с разделителями-запятыми только из AK номеров билетов. Предполагается, что за шаблоном номера билета следует AK-, за которым следуют только цифры, что вы и показываете. Извлекаются только номера билетов и то, что вы говорите, что хотите.

  • Если вы введете одну строку или одну ячейку, это содержимое появится.
  • Если вы введете диапазон ячеек, они будут объединены в одну строку вывода.
  • Механизм регулярных выражений VBA используется для извлечения номеров билетов

Option Explicit
  Public RE As Object
  Public MC As Object
  Public M As Object

    'Assume starts with AK- and ends with numbers
    '  as per your example
 Public Const sPat As String = "\bAK1-\d+"

Function getAK(vIN As Variant) As String
    Dim V As Variant
    Dim sTemp As String

Set RE = CreateObject("vbscript.regexp")
With RE
    .Pattern = sPat
    .ignorecase = False
    .Global = True
End With

If IsArray(vIN) Then
    For Each V In vIN
        sTemp = sTemp & "," & getStrOnly(CStr(V))
    Next V
Else
    getAK = getStrOnly(CStr(vIN))
    Exit Function
End If

getAK = Mid(sTemp, 2)

End Function

Private Function getStrOnly(str As String) As String
    Dim sTemp As String
    With RE
        If .test(str) = True Then
            Set MC = .Execute(str)
            For Each M In MC
                sTemp = sTemp & "," & M
            Next M
        End If
    End With
    getStrOnly = Mid(sTemp, 2)
End Function

Использование версии для одной ячейки: getAK(A1):

[118 ] enter image description here

Используя метод нескольких ячеек:

=getAK(A1:A12)

мы получаем

AK1-97760,AK1-96767,AK1-97719,AK1-97999,AK1-98105,,AK1-97113,AK1-97073,AK1-97019,AK1-97951,AK1-97858,AK1-97195,AK1-96806,AK1-97719,AK1-97896,AK1-98115,AK1-98151,AK1-98089,AK1-96780,AK1-90919,AK1-96705,AK1-96806,AK1-95397

Если вы также хотите вернуть статус заявки (часть в скобках после номера заявки), вы можете изменить регулярное выражение на:

"\bAK1-\d+(?:\s*\([^)]+\))?"

И если ваши шаблоны заявок отличаются, вы также можете соответствующим образом изменить регулярное выражение.

7
задан 2 revs, 2 users 100% 2 October 2008 в 18:04
поделиться

2 ответа

Используйте мастера диаграмм.

На Шаге 2 4, существует вкладка, маркировал "Series". Существует 3 поля и поле списка на этой вкладке. Поле списка показывает другой ряд, который Вы уже включаете в диаграмму. Каждый ряд имеет и поле "Name" и поле "Values", которое характерно для того ряда. Заключительное поле является полем "Category (X) axis labels", которое характерно для всего ряда.

Нажмите на кнопку "Add" ниже поля списка. Это добавит пустой ряд к Вашему полю списка. Заметьте, что значения для "Имени" и для "Значений" изменяются при выделении ряда в поле списка.

Выберите свой новый ряд.

Существует значок в каждом поле на правой стороне. Этот значок позволяет Вам выбирать ячейки в рабочей книге для получения по запросу данных из. При нажатии на него Мастер временно прячется (за исключением поля, Вы работаете в), разрешение Вам взаимодействовать с рабочей книгой.

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

Надежда, которая помогает.

Править: Вышеупомянутое относится к 2003 и прежде. На 2007, когда диаграмма выбрана, необходимо смочь сделать подобное действие с помощью опции "Select Data" на вкладке "Design" ленты. Это открывает диалоговое окно, перечисляющее Ряд для диаграммы. Можно выбрать ряд, как Вы могли в Excel 2003, но необходимо использовать кнопки "Add" и "Edit" для определения пользовательского ряда.

6
ответ дан 7 December 2019 в 12:26
поделиться

2007 стал мощнее с лентой...:=) Чтобы добавить новую серию в диаграмму, сделайте следующее: Выберите Диаграмма, затем нажмите Дизайн в Инструментах диаграммы на ленте, На ленте Design выберите "Select Data" в Data Group, Затем вы увидите кнопку Добавить для добавления новой серии.

Надеюсь, это поможет.

-1
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: