0 / 0 / 0
Регистрация: 03.07.2019
Сообщений: 22
1

Удаление текста после ALT+Enter либо удаление дублей в массиве

04.03.2020, 21:31. Показов 1243. Ответов 2

подзадача заключается в том, чтобы после определенного символа в моем случае это "ALT+Enter"
удалить все слова внутри ячейки. Использую для этого следующую строку кода. Все работает,

mas_bank(i) = Split(mas_bank(i), Chr(10)) , но дальше
использую код по удалению дублей среди получившихся слов и тут возникает проблема данный код не работает при использовании функции split не могу понять в чем проблема, по отдельности все работает как надо.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Sub analiz()
 
Dim i, i1, i2, i3 As Long ' переменная для цикла по строкам
Dim j As Integer ' переменная для цикла по столбцам
Dim lLastrow As Long ' последняя непустая строка
Dim ws1, ws2, ws3 As Worksheet
Set ws1 = Sheets("Меню")
Set ws2 = Sheets("Лист2")
Set ws3 = Sheets("TDSheet")
Dim st_data As Integer 'Номер столбца, где даты
Dim st_schetD As Integer 'Номер столбца, где счет дебета
Dim st_schetK As Integer 'Номер столбца, где счет кредита
Dim st_DO As Integer 'Номер столбца ДО
Dim st_KO As Integer ' Номер столбца КО
Dim st_zapic As Integer ' Номер строки начала записи
Dim st_tabl As Integer ' Номер строки начала таблицы
Dim st_deb, st_kred As Integer 'Столбцы счета дебета счета кредита
Dim st_bank As Integer
Dim r As Range ' Для перебора всех значение по ячейкам
Dim kol_bank, kol As Integer
Dim K As Integer
Dim tmp$
'Dim myVisibleRange As Range
'массивы для хранения счетов и банков, оборотов
Dim mas_schet_kr$(), mas_bank(), mas_ob() As Long, mas_schet_db$(), arr, mas$()
 
Dim delim$: delim = ";"
Dim tmp1$ 'временное хранение счетов по кредиту
Dim max_el#, max_el1#
st_data = ws1.Range("C3")
st_bank = ws1.Range("C4")
st_deb = ws1.Range("C5")
st_kred = ws1.Range("C6")
st_DO = ws1.Range("C7")
st_KO = ws1.Range("C8")
st_zapic = ws1.Range("C9")
st_tabl = ws1.Range("C10")
 
 
'a = Replace(ws1.Range("С11"), " ", "")
lLastrow = ws3.Cells(Rows.Count, st_data).End(xlUp).Row ' Находим последнюю строку в таблице по 3 столбцу для использования в цикле
'   ws3.Range(Cells(st_tabl, st_data), Cells(lLastrow, 12)).AutoFilter Field:=6, Criteria1:="51" 'Фильтр по счету дебита
'   ws3.Range(Cells(st_tabl, st_data), Cells(lLastrow, 12)).AutoFilter Field:=9, Criteria1:=Array("62.01", "62.02", "62.1", "62.2"), Operator:=xlFilterValues 'Фильтр по счету кредита
'   Set myVisibleRange = ws3.Cells(st_zapic & lLastrow, st_bank).SpecialCells(xlCellTypeVisible) ' Сохраняем фильтрованные значения
'   Sheets("Данные").Range("AC3:AC" & lLastrow).Copy Sheets("Аналитика").Range("H8")
'   For j = 1 To lLastrow
'    For Each r In myVisibleRange.Rows
'     ws2.Cells(1, j).Value = r.Value
'    Next
'   Next
  kol_bank = 0
  
  tmp = Replace(ws1.Range("C11"), " ", "")
  mas_schet_db = Split(tmp, delim)
  max_el = UBound(mas_schet_db)
  tmp1 = Replace(ws1.Range("C12"), " ", "")
  mas_schet_kr = Split(tmp1, delim)
  max_el1 = UBound(mas_schet_kr)
'  If UBound(mas_schet_kr) > UBound(mas_schet_db) Then
'  max_el = UBound(mas_schet_kr)
'  Else: max_el = UBound(mas_schet_db)
'  End If
  arr = ws3.UsedRange.Value
 
  For i = 0 To max_el
   tmp = mas_schet_db(i)
    For i2 = st_zapic To lLastrow
     If arr(i2, st_deb) = tmp Then
      For i1 = 0 To max_el1
       tmp1 = mas_schet_kr(i1)
        If arr(i2, st_kred) = tmp1 Then
         kol_bank = kol_bank + 1
         'ReDim mas_bank(kol_bank)
        '  mas_bank(kol_bank) = ws3.Cells(i2, st_bank).Value
      '   ws2.Cells(1, kol_bank).Value = ws3.Cells(i2, st_bank).Value
        End If
     Next
    End If
   Next
  Next
    
 ReDim mas_bank(kol_bank)
 kol = 0
   For i = 0 To max_el
   tmp = mas_schet_db(i)
    For i2 = st_zapic To lLastrow
     If arr(i2, st_deb) = tmp Then
      For i1 = 0 To max_el1
       tmp1 = mas_schet_kr(i1)
        If arr(i2, st_kred) = tmp1 Then
         kol = kol + 1
         mas_bank(kol) = ws3.Cells(i2, st_bank).Value
        End If
     Next
    End If
   Next
 
  Next
  'Очистка лишних символов
   For i = 1 To kol_bank
    'mas_bank(i) = Right(mas_bank(i), Len(mas_bank(i)) - 22)
    mas_bank(i) = Split(mas_bank(i), Chr(10))
     'mas_bank(i) = Replace(mas_bank(i), Chr(10), "")
   Next
   ReDim Preserve mas_bank(kol_bank)
'    For i = 1 To kol_bank
'     mas_bank(i) = Left(mas_bank(i), 31)
'    Next
   
'   For i = 1 To kol_bank
'    mas_bank(i) = Replace(mas_bank(i), Chr(10), "")
'   Next
 
  'Удаление дублей
   Dim coll As New Collection, a
    Dim i4 As Long
    kol = 0
On Error Resume Next
    For Each a In mas_bank
       coll.Add a, a
    Next
    ReDim mas_bank(coll.Count)
    For i4 = 1 To coll.Count
       mas_bank(i4) = coll(i4)
       kol = kol + 1
    Next
ReDim Preserve mas_bank(kol)
  For i = 1 To kol
   ws2.Cells(1, i) = mas_bank(i)
  Next
 
End Sub
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2020, 21:31
Ответы с готовыми решениями:

Удаление дублей в массиве
Помогите скриптом, который бы убирал дубли в массиве. Массив представляет собой список фамилий и...

Удаление дублей в массиве
Помогите, пожалуйста.:wall: Берем два столбца с листа, записываем их в массив, и нужно очистить...

Удаление дублей
Как с наименьшей трудоемкостью удалить дубли из таблицы InterBase. Т.е. имеем пары строк с...

Удаление дублей в файле
но нчее не получлось как всегда, решил вспомнить программирование называется. вот код, какую-то...

2
6871 / 2802 / 533
Регистрация: 19.10.2012
Сообщений: 8,544
05.03.2020, 02:03 2
Лучший ответ Сообщение было отмечено Radeon007 как решение

Решение

Сплит возвращает массив, так что вряд ли всё работает... Берите только Split(mas_bank(i), Chr(10))(0)
1
0 / 0 / 0
Регистрация: 03.07.2019
Сообщений: 22
05.03.2020, 09:04  [ТС] 3
Спасибо, помогло.
Сделал через формулы работает, но ваш вариант лучше.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2020, 09:04
Помогаю со студенческими работами здесь

Удаление дублей из массива
Имеется массив строк, в массиве имеются одинаковые строки, и не по одному дублю, а много....

Удаление дублей php
Добрый вечер. У меня в базу записывается некая статистика, и так как запрос "INSERT INTO" нельзя...

Удаление дублей по условию
Привет всем. Один вопрос. База в 2 млн. организаций. Есть дубли следующего рода: Ячейка А1...

Удаление дублей из массива
всем привет! посоветуйте что-то очень быстрое под удаление повторения в массиве речь идет об...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru