Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 След.
Поиск по неполному совпадению текста
 
Цитата
Dobshikov написал:
проблема появляется если в столбце есть значения с частичным совпадением, например 1883 и 18834. А нужно только 100% совпадение.  
Это легко исправить:
Код
=ИНДЕКС(Таблица1[Код1];ПОИСКПОЗ(G2&"-"&"*";Таблица1[Название];0))

Изменено: AB1 - 01.02.2020 12:38:28
Трансформация данных таблицы в однин столбец
 
Результат на листе "result":
https://dropmefiles.com/VveMM
VBA. Запись свойства объекта в переменную
 
Согласен, так можно передать только ссылку на объект:
Код
Set curProperty = Worksheets("Лист").PivotTables("Таблица").PivotFields("Поле")
а затем попробовать извлечь переменную:
Код
curProp = curProperty.ShowDetail
Хотя в этом случае нет разницы с исходным вариантом.
Сравнение и нахождение общего внутри ячеек., возможно ли
 
Цитата
Antonio0608 написал:
если в первой ячейке стоит "1" а во второй ячейке стоит "ab" то будет общее "1ab" ( так как совпадений нет, и все принимается за общее)
Это расходится с тем, что в файле-примере.
Принял все за общее. Работает, только, если в обеих ячейках не более двух символов.
Если больше, то проще сделать макросом.

Цитата
если использовать функции ЛЕВСИМВ и ПРАВСИМВ, то можно сравнить первый и последний символы( и это уже хорошо).
Но что делать если символов  хотя бы три.
Цитата
=MID(a1;2;1) чего огород городить
Конечно, так проще, но хотел показать, что ЛЕВСИМВ и ПРАВСИМВ это тоже могут)
Изменено: AB1 - 29.01.2020 23:52:19
VBA. Запись свойства объекта в переменную
 
Здравствуйте.

Сложно помочь в данном случае, не видя файла (можно было попробовать создать файл для примера).
Попробую предложить пару вариантов.

1. Если невозможно передать значение, можно попробовать получить ссылку.
Для этого нужно создать переменную типа Variant или Object, а ссылку передать при помощи оператора Set:
Код
Set curProp = Worksheets("Лист").PivotTables("Таблица").PivotFields("Поле").ShowDetail

2. Если не получается передать булево значение напрямую, то можно попробовать выполнить проверку и присвоить значение в зависимости от результата:

Код
if Worksheets("Лист").PivotTables("Таблица").PivotFields("Поле").ShowDetail Then curProp = true: Else curProp = false

Надеюсь, что один из вариантов поможет)

Сравнение и нахождение общего внутри ячеек., возможно ли
 
Выделить второй символ:
Код
=ПРАВСИМВ(ЛЕВСИМВ(текст;2))
Выделить предпоследний символ:
Код
=ЛЕВСИМВ(ПРАВСИМВ(текст;2))
Собрать уникальные значения с нескольких диапазонов, UDF похожая на ВПР
 
qwerrr, ничего, этот саб можно интегрировать в функцию без проблем.
Собрать уникальные значения с нескольких диапазонов, UDF похожая на ВПР
 
Цитата
Sanja написал:
Единственно я не понял, почему у Вас в 'как нужно' не попало последнее значение 'аааааа', где 6 а?
Скорее всего это опечатка. В своем файле я исправил это значение на "ааааа".
Собрать уникальные значения с нескольких диапазонов, UDF похожая на ВПР
 
Готово.
Изменить макрос сравнения с совпадения на различия
 
Код
Sub Sravnenie()
 
    Dim lLastRowA As Long
    Dim lLastRowC As Long
    Dim i As Long
    Dim rFind As Excel.Range
    lLastRowA = Cells(Rows.Count, "A").End(xlUp).Row
    lLastRowC = Cells(Rows.Count, "C").End(xlUp).Row
    Application.ScreenUpdating = False
    For i = 2 To lLastRowA Step 1
    Set rFind = Columns("A").Find(What:=Cells(i, "B").Text, LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    If rFind Is Nothing Then
    Cells(lLastRowC, "C").Value = Cells(i, "B").Value
    lLastRowC = lLastRowC + 1
    End If
    Next i
    Application.ScreenUpdating = True
    
End Sub
Поиск похожего текста
 
Результат лучше проверить)

Строка 186 на 2-м листе:
Цитата
Мышкинский пр-д д.10 - 10-й Маяковского переулок
Разбивка суммы производных чисел на части
 
Crewcat, не стоит благодарности, был рад помочь.
Разбивка суммы производных чисел на части
 
Crewcat, вчера неверно понял задачу, сейчас разобрался, как мне кажется)
Разбивка суммы производных чисел на части
 
2. Вы имеете в виду, что информацию нужно перенести с amount на лист sum и перевернуть? Или перевернуть, но оставить на листе amount?

Удалил пустые строки. Те данные, которые вы использовали в последний раз обрабатываются корректно.
Что касается других вариантов исходных данных, не тестировал - к сожалению, сейчас мало свободного времени.
Изменено: AB1 - 17.04.2018 11:16:21
Разбивка суммы производных чисел на части
 
Добавил пропуск ошибок, вроде считает верно.
Лишние строки при выводе информации в будущем уберу.
Разбивка суммы производных чисел на части
 
Crewcat,
Переделал макрос на работу только с двумя товарами в группе.
Ошибок, связанных с некорректной работой макроса с дробными числами, не обнаружил.
Пожалуйста, приведите пример (желательно в моем файле).
Как подставить восклицательный знак перед заглавной буквой?
 
UDF

Код
Function accent(ByVal intext As Variant) As Variant
Dim xx As Long, parts() As Variant, indexes() As Variant, count As Long, _
regex As Object, RegMatchCollection As Object, RegMatch As Object
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True
.IgnoreCase = False
.Pattern = "[A-ZА-ЯЁ]+"
End With
Set RegMatchCollection = regex.Execute(intext.Value)
For Each RegMatch In RegMatchCollection
ReDim Preserve parts(count)
ReDim Preserve indexes(count)
parts(count) = RegMatch
indexes(count) = RegMatch.Firstindex + 1
count = count + 1
Next
For xx = 0 To UBound(parts)
intext = Left(intext, indexes(xx) - 1) & Replace(intext, parts(xx), "!" & parts(xx), indexes(xx), 1)
Next xx
accent = intext
End Function
Изменено: AB1 - 14.04.2018 15:49:36
Разбивка суммы производных чисел на части
 
Написал макрос. Тщательно не тестировал, возможны ошибки. Проверки на максимальное количество строк при выводе на листе amount нет, поэтому нужно обращать на это внимание.

На листе price_1 размещены цены за единицу товара при продаже без групп.
На листе price_2 размещены цены на товары в группах, в которых один со скидкой.
Максимальное количество наименований товаров в группе - 5.

На листе sum размещены суммы продаж каждого товара за период.
На листе amount выводятся результаты в 12 столбцах: 5*2 - для товаров, 1*2 - для группы.
"*" отмечаются периоды, в которых размещены несколько комбинаций продаж для определенной группы товаров.
Если у товаров из группы отсутствуют продажи (лист sum) в определенном периоде, значит они не выводятся.
Если определено, что товары из группы вместе не продавались, то количество раздельных продаж выводится на строке без добавления наименований товаров, которых нет в группе.
Товары, которые не участвуют в группах, выводятся отдельно от товаров, которые продавались в группах.
Изменено: AB1 - 16.04.2018 12:00:55
Разбивка суммы производных чисел на части
 
1. Я немного о другом. Например, у вас проводятся в одном периоде две акции, и в обеих участвуют одинаковые товары. Т.е. в данном случае возможно наличие трех цен на один товар в течение одного периода.
3. Получается, что нужно выводить все варианты комбинаций, при которых можно получить исходную сумму?
Изменено: AB1 - 12.04.2018 11:46:37
Разбивка суммы производных чисел на части
 
Crewcat,
1. А товары в группах могут пересекаться?
Например, группы товаров A+B и A+B+C пересекаются.
Одно дело считать 2 варианта, а другое - множество.
2. Если в группе может быть до 5 товаров, то скидка предоставляется только на один из них?
3. Если у товара 2 цены: 10 и 8, а сумма 80, то как определить количество - это 10*8 или 8*10?
Изменено: AB1 - 11.04.2018 15:47:08
Разбивка суммы производных чисел на части
 
... непонятно только, что такое "период 1", "период 2".
Изменено: AB1 - 17.04.2018 11:11:21
Удаление дубликатов Collection vs. Dictionary
 
AAF, попробовал исправленную версию.
Из тех же 8 файлов, на выходе получил 5:
Код
03.12.17 14:42:44 2000052 20171203_144244_2.csv 2 32,535 26,594 1,055 60,184
03.12.17 14:42:35 1500035 20171203_144235_2.csv 2 25,652 24,938 1,055 51,645
03.12.17 14:42:26 1000022 20171203_144226_4.csv 4 18,871 23,051 1,055 42,977
03.12.17 14:42:17 500011 20171203_144217_4.csv 4 12,102 21,074 1,055 34,230
03.12.17 14:41:57 500007 20171203_144157_500007.csv 500 007 4,480 10,453 1,055 15,988
Их суммарный объем равен 500 019, но если проверить реальное количество строк, то получится 500 015, т.е. 4 раза были посчитаны пустые строки.
Но, часть информации потерялась, т.к. на выходе должно быть 500 033 строки.
Удаление дубликатов Collection vs. Dictionary
 
Цитата
bedvit написал:
7млн.строк сожрали 5.3 гига?
Нет, эти файлы содержат разную информацию :)  
Удаление дубликатов Collection vs. Dictionary
 
AAF, ошибки получал из-за того, что параллельно была запущена программа, которая использовала папки "IN" & "OUT", а также из-за конфликта имен в папках "IN" & "IN\Arch".
Опишу случай, которому пока нет объяснения :)
В папку "IN" помещаю 8 файлов объемом около 500 Мб, в каждом из которых есть уникальные строки.
Запускаю макрос.
После некоторого времени программа прекращает работу без сообщения об ошибке и записи информации на листе.
В папке "OUT" появляется 5 файлов, в папке "IN" остается 2, остальные 6 перемещены в "IN\Arch".
Удаление дубликатов Collection vs. Dictionary
 
bedvit,
опробовал exe-версию на файле 2.7 Гб с 48 миллионами строк - время работы всего 1 мин 22 сек.
файл 8 Гб с 55 миллионами строк программа обработала за 2 мин 22 сек.
Удаление дубликатов Collection vs. Dictionary
 
AAF, действительно, скорость выросла. Файл с 600 000 строк обработал за 15.5 сек.
Заметил такой баг - если подать на вход файл, в котором только уникальные значения, макрос выдает ошибку.
Удаление дубликатов Collection vs. Dictionary
 
Попробовал для сравнения Fast_Duplicates_Remover_v0.1, он отработал ровно за 3 минуты на том же компьютере, что почти в 5 раз медленнее чем библиотека от bedvit!
Удаление дубликатов Collection vs. Dictionary
 
bedvit, к сожалению на рабочем компьютере нет x64 Excel, на домашнем библиотека отработала за 37.5 секунды на 2 Гб файле, спасибо!
Удаление дубликатов Collection vs. Dictionary
 
Цитата
bedvit написал:
Есть эмулятор выгрузки, что бы не таскать почти 3 Гига?
Подготовил генератор файла на 2ГБ с 80% уникальных строк:
Код
Option Explicit
Sub FileGenerator()
    
    Dim t As Single
    Dim i As Long
    Dim Filename As String
      
    Debug.Print "== Start " & Now
    
    t = Timer
    
    Filename = "C:\Files\in.csv"
    
    Open Filename For Output As #1
    Close #1
    
    Open Filename For Binary Access Write As #2
    Put #2, , """" & "fname" & """" & vbCrLf
    
    For i = 1 To 2748311
    Put #2, , """" & _
    "qplskfmygaelkjgpaatgcwtwlagwkepgaiesgwkseptwaypdl" & _
    "glgsgzwkglkippwlgchkipdlywpvglgsgw43z74zg?qplskfu" & _
    "kepgaiesgkgshelkippgatmgnepmgnetnitsypzwzhimypdly" & i & _
    """" & vbCrLf
    Put #2, , """" & _
    "qplskfmygaelkjgpaatgcwtwlagwkepgaiesgwkseptwaypdl" & _
    "kepgaiesgkgshelkippgatmgnepmgnetnitsypzwzhimypdly" & i & _
    "glgsgzwkglkippwlgchkipdlywpvglgsgw43z74zg?qplskfm" & _
    """" & vbCrLf
    Put #2, , """" & _
    "glgsgzwkglkippwlgchkipdlywpvgldsgw43zs4zg?qplskfm" & i & _
    "qplskfmygaelkjgpaatgcwtwlagwkepgaiesgdkseptsaypdl" & _
    "kepgaiesgkgshelkippgatmgnepmgnetnitsypzszhimypdly" & _
    """" & vbCrLf
    Put #2, , """" & _
    "glgsgzwkglkippwlgchkipdlywpgglgsgw43g74zg?qplskfm" & i & _
    "qplskfmygaelkjgpaatgcwtwlbggkepgaiesgwkseptwaypdl" & _
    "kepgaiesgkgshelkippgatmgnepmgnetnitsgpzwzhiyypdly" & _
    """" & vbCrLf
    Put #2, , """" & _
    "glgsgzwkglkipptlgchkipdlywpvglgegw43z74zg?qplskfm" & _
    "qplskfmygaelkjgpaatgcwtwlafwkepgaiesdwkseptwaypdl" & _
    "kepgaiesgkgshelkippaatmgnepmgnetnftsypzwzhimypdly" & _
    """" & vbCrLf
    Next i
    Close #2
    
    Debug.Print "Generated: " & (i - 1) * 5 & " strings", Round(Timer - t, 3)
    
    End Sub
У меня он отрабатывается за 30 сек.
На полученном файле библиотека также сбоит.
Изменено: AB1 - 01.12.2017 16:32:57
Удаление дубликатов Collection vs. Dictionary
 
 
bedvit, к сожалению, на больших объемах происходит AppCrash.
Речь идет о файле с почти 48 миллионами строк (2 860 650 266 байтов).
Страницы: 1 2 3 4 5 6 7 8 9 10 След.
Наверх