3

Как бы вы пошли о создании подмножества в новом столбце, используя встроенные функции Excel (не VBA, если это возможно). Я предварительно создал столбец точек данных, которые представляют собой либо любое число, хранящееся в подмножестве, либо 0, которое будет удалено из подмножества. Концепция была бы похожа на использование фильтра, но использование фильтра не вариант, потому что столбец подмножества должен быть создан автоматически. Подмножество не должно иметь пустых строк между данными. Например, столбец 1 (исходный набор) и столбец 2 (подмножество):

Колонка 1 Колонка 2
5 5
1 1
0 4
4 3
0 2
3
2

Заранее спасибо.

2 ответа2

1

Это было бы очень просто в VBA и не требовало вмешательства пользователя, кроме выбора диапазона ячеек, из которого нужно создать подсписок, и определения столбца, в котором вы хотите, чтобы вывод отображался:

Sub CreateSubSetList()
Dim rng As Range: Set rng = Application.InputBox("Select the column which contains your list", "Select column", Type:=8)
Dim colNum As Variant: colNum = Application.InputBox("Input the destination column letter", "Destination Column?")
Dim oRng As Range
Dim cl As Range
Dim c As Long: c = 1
    If rng Is Nothing Then Exit Sub
    Set rng = rng.Columns(1)
    Set oRng = Range(Columns(colNum).Address).Columns(1)
    If oRng Is Nothing Then Exit Sub
    For Each cl In rng.Cells
        If Not cl.Value = 0 Then
            oRng.Cells(c).Value = cl.Value
            c = c + 1
        End If
    Next
End Sub
0

Предполагая, что данные столбца 1 находятся в A1:A7, затем нажмите Ctrl+Shift+Enter по следующей формуле во всем диапазоне B1:B7 или cse и перетащите вниз.

=IFERROR(INDEX($A$1:$A$7,SMALL(IF($A$1:$A$7<>0,ROW($A$1:$A$7)),ROW()),),"").

Обратите внимание, что iferror работает только с Excel 2007 года.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .