Excel объединить 2 формулы - PullRequest
0 голосов
/ 26 марта 2019

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

Пример данных:

enter image description here

Первая формула для удаления пробелов:

=IFERROR(INDEX($A$1:$A$500,SMALL(IF($A$1:$A$500<>"",ROW($A$1:$A$500)-ROW($A$1)+1),ROW(A1))),"")

Вторая формула удалит всю двуличность.

=IF(COUNTIF(A$1:A1,A1)=1,A1,"")

Спасибо!

1 Ответ

0 голосов
/ 26 марта 2019

Вот решение задачи, как я ее понял вчера:

Удалить "пробелы": =substitute(A1," ","")

ваш счет =IF(COUNTIF(A$1:A1,A1)=1,A1,"")

Вместе: =substitute(IF(COUNTIF(A$1:A1,A1)=1,A1,"")," ",""))

Значения, которые отличаются только пробелами, будут отображаться как разные!

Если у вас есть значения, равные после подстановки (например, «b b» и «bb»)
тогда вам нужно два ряда и вам нужно прибегнуть после замены.
Тогда невозможно объединить две формулы без дальнейшей работы.
(например, решение vba: замена, курорт и вывод).

Вот как бы я решил это с помощью VBA:

Option Explicit

Sub sample_values()
    Range("A1").Value = "Values"
    Range("A2").Value = "2023"
    Range("A3").Value = "2141"
    Range("A4").Value = "2156"
    Range("A5").Value = "2175"
    Range("A6").Value = "2300"
    Range("A7").Value = "23 00"
    Range("A8").Value = "23 0 0  "
    Range("A9").Value = "2181"
    Range("A10").Value = "2188"
    Range("A11").Value = "2204"
    Range("A12").Value = "2207"
    Range("A13").Value = "2211"
    Range("A14").Value = "22 11"
    Range("A15").Value = "2 2 1 1"
    Range("A16").Value = "221  1"
    Range("A17").Value = "221   1"
    Range("A18").Value = "2236"
    Range("A19").Value = "2239"
    Range("A20").Value = "2250"
End Sub

Sub rb_s_ouv()
'remove_blanks_and_sort_and_output_unique_values()

Dim myInput As Range
Dim sortedInput As Range
Dim outputRng As Range
Dim lastRow As Long
Dim cell As Range
Dim uniqueCt As Integer
Dim noBlanks_Column As Boolean

lastRow = Range("A1").SpecialCells(xlCellTypeLastCell).Row

Set myInput = Range(Cells(2, 1), Cells(lastRow, 1))
'Debug.Print myInput.Address

noBlanks_Column = True     'no blanks in an individual column
'noBlanks_Column = False   'no blanks in the original column

'substitute blanks
If noBlanks_Column Then myInput.Offset(-1, 2).Value = "no_blanks"
For Each cell In myInput
    If noBlanks_Column Then
        cell.Offset(0, 2).Value = Replace(cell.Value, " ", "")
    Else
        cell.Value = Replace(cell.Value, " ", "")
    End If
Next cell

'sort input
If noBlanks_Column Then
    myInput.Offset(0, 2).Sort myInput.Offset(0, 2), xlAscending
    Set sortedInput = myInput.Offset(0, 2)
Else
    myInput.Sort myInput, xlAscending
    Set sortedInput = myInput
End If

'output unique values
sortedInput.Offset(-1, 2).Range("A1").Value = "unique values"
Set outputRng = sortedInput.Offset(0, 2).Range("A1")

uniqueCt = 0
For Each cell In sortedInput
    If cell.Value <> cell.Offset(1, 0).Value Then
        outputRng.Offset(uniqueCt, 0).Value = cell
        uniqueCt = uniqueCt + 1
    End If
Next cell

End Sub

Подробности относительно столбца "без пробелов":

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...