Excel объединяет 2 формулы

#arrays #excel #if-statement #excel-formula #formula

#массивы #excel #if-оператор #excel-формула #формула

Вопрос:

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

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

введите описание изображения здесь

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

 =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. Я думаю, может быть полезно, если вы опубликуете какой-нибудь пример данных о том, как работает эта формула и как вы ее применяете.

2. извините, что не предоставил достаточно информации. Вот изображение образца данных. В столбце A у меня есть данные, которые содержат дубликаты, мне нужно вывести, как показано в столбце B. В основном пытаюсь воспроизвести функцию удаления дублирования с помощью формулы. i.imgur.com/0ITFThB.jpg

Ответ №1:

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

Удалите «пробелы»: =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
  

Подробнее о столбце «без пробелов»:

введите описание изображения здесь

Комментарии:

1. если я это сделаю, останутся пустые строки?

2. Да! Вы правы! Пожалуйста, найдите выше решение на vba! Вы также можете использовать vba для подстановки и сводку для отображения уникальных значений!

3. большое вам спасибо, но я не ищу решение на vba, хотя мне нужно, чтобы оно было формулой. Благодарим вас за предоставление решения vba.