Всем привет. У меня есть 3 столбца и в них прописаны города. Можно ли сделать отдельный столбец, что бы там показывались все эти города, но только без повторений.
Всем привет. У меня есть 3 столбца и в них прописаны города. Можно ли сделать отдельный столбец, что бы там показывались все эти города, но только без повторений.feksel
sboy, да про это я знаю, но мне не подойдет. просто в оригинальном файле мне этим не удобно пользоваться. Поэтому и обратился к вам. Можно ли это задать как то формулой?
sboy, да про это я знаю, но мне не подойдет. просто в оригинальном файле мне этим не удобно пользоваться. Поэтому и обратился к вам. Можно ли это задать как то формулой?feksel
feksel, добрый день,вариант макроса,кнопки test и очистка
[vba]
Код
Sub test() Dim z, z1, i&, j&, m&: z = Range("A1:E" & Range("E" & Rows.Count).End(xlUp).Row).Value ReDim z1(1 To UBound(z) * 3, 1 To 1) With CreateObject("scripting.dictionary"): .CompareMode = 1 For j = 1 To 5 Step 2 For i = 1 To UBound(z) If Not IsEmpty(z(i, j)) Then If .Exists(z(i, j)) = False Then m = m + 1: .Item(z(i, j)) = m: z1(m, 1) = z(i, j) End If Next i, j Range("H2").Resize(m, 1).Value = z1 End With End Sub
[/vba]
feksel, добрый день,вариант макроса,кнопки test и очистка
[vba]
Код
Sub test() Dim z, z1, i&, j&, m&: z = Range("A1:E" & Range("E" & Rows.Count).End(xlUp).Row).Value ReDim z1(1 To UBound(z) * 3, 1 To 1) With CreateObject("scripting.dictionary"): .CompareMode = 1 For j = 1 To 5 Step 2 For i = 1 To UBound(z) If Not IsEmpty(z(i, j)) Then If .Exists(z(i, j)) = False Then m = m + 1: .Item(z(i, j)) = m: z1(m, 1) = z(i, j) End If Next i, j Range("H2").Resize(m, 1).Value = z1 End With End Sub
Sub TTTIII() Dim lLastRow As Long Dim lLastRow_1 As Long Dim lLastRow_2 As Long Dim lLastRow_3 As Long Dim lLastRow_4 As Long Dim lLastRow_5 As Long Dim lLastRow_6 As Long Dim lLastRow_7 As Long lLastRow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(1, 1), Cells(lLastRow, 1)).Select Selection.Copy Range("G1").Select ActiveSheet.Paste lLastRow_1 = Cells(Rows.Count, 3).End(xlUp).Row Range(Cells(1, 3), Cells(lLastRow_1, 3)).Select Selection.Copy Application.CutCopyMode = False Selection.Copy lLastRow_3 = Cells(Rows.Count, 7).End(xlUp).Row lLastRow_4 = lLastRow_3 + 1 Range(Cells(lLastRow_4, 7), Cells(lLastRow_4, 7)).Select ActiveSheet.Paste lLastRow_2 = Cells(Rows.Count, 5).End(xlUp).Row Range(Cells(1, 5), Cells(lLastRow_2, 5)).Select Selection.Copy Application.CutCopyMode = False Selection.Copy lLastRow_5 = Cells(Rows.Count, 7).End(xlUp).Row lLastRow_6 = lLastRow_5 + 1 Range(Cells(lLastRow_6, 7), Cells(lLastRow_6, 7)).Select ActiveSheet.Paste lLastRow_7 = Cells(Rows.Count, 7).End(xlUp).Row Range(Cells(1, 7), Cells(lLastRow_7, 7)).Select Application.CutCopyMode = False ActiveSheet.Range(Cells(1, 7), Cells(lLastRow_7, 7)).RemoveDuplicates Columns:=1, Header:=xlNo End Sub
[/vba]
а я тоже кину свой ущербный вариант [vba]
Код
Sub TTTIII() Dim lLastRow As Long Dim lLastRow_1 As Long Dim lLastRow_2 As Long Dim lLastRow_3 As Long Dim lLastRow_4 As Long Dim lLastRow_5 As Long Dim lLastRow_6 As Long Dim lLastRow_7 As Long lLastRow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(1, 1), Cells(lLastRow, 1)).Select Selection.Copy Range("G1").Select ActiveSheet.Paste lLastRow_1 = Cells(Rows.Count, 3).End(xlUp).Row Range(Cells(1, 3), Cells(lLastRow_1, 3)).Select Selection.Copy Application.CutCopyMode = False Selection.Copy lLastRow_3 = Cells(Rows.Count, 7).End(xlUp).Row lLastRow_4 = lLastRow_3 + 1 Range(Cells(lLastRow_4, 7), Cells(lLastRow_4, 7)).Select ActiveSheet.Paste lLastRow_2 = Cells(Rows.Count, 5).End(xlUp).Row Range(Cells(1, 5), Cells(lLastRow_2, 5)).Select Selection.Copy Application.CutCopyMode = False Selection.Copy lLastRow_5 = Cells(Rows.Count, 7).End(xlUp).Row lLastRow_6 = lLastRow_5 + 1 Range(Cells(lLastRow_6, 7), Cells(lLastRow_6, 7)).Select ActiveSheet.Paste lLastRow_7 = Cells(Rows.Count, 7).End(xlUp).Row Range(Cells(1, 7), Cells(lLastRow_7, 7)).Select Application.CutCopyMode = False ActiveSheet.Range(Cells(1, 7), Cells(lLastRow_7, 7)).RemoveDuplicates Columns:=1, Header:=xlNo End Sub