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

Страницы: 1
при условии вставить данные в ячейку слева, с помощью vba или функции
 
Спасибо, работает!!
при условии вставить данные в ячейку слева, с помощью vba или функции
 
Добрый день, вроде очень просто, но не могу понять как сделать, помогите.
В столбце A количество товаров, а в столбце B артикул, задача
если в столбце B нет артикля, то количество товара  исправляем на 0.
В каком случае скорость обработки будет быстрее?, Будет ли быстрее отфильтрованные данные
 
Цитата
написал:
Начните с  этой  статьи на данном сайте.
Эту статью уже читал, вопрос тут как Excel считает по отфильтрованным позциям, если на листе 50000 строк и 45000 cкрыты он все равно их обработает?
В каком случае скорость обработки будет быстрее?, Будет ли быстрее отфильтрованные данные
 
На листе несколько тысяч строк с товарами из разных категорий, к ним обращаюсь через VLOOKUP, в каком случае скорость обработки будет быстрее
A. отфильтровать все ненужные категории и удалить уменьшив базу поиска в разы
B. просто отфильтровать без удаления
C. оставить как есть ничего не меняя
D. что-то еще?

Спасибо!
VBA макрос вставляет строку на основе данных из ячейки
 
ok спасибо
VBA макрос вставляет строку на основе данных из ячейки
 
Цитата
написал:
UBound(
Спасибо, я тоже сейчас пытаюсь оптимизировать, перевожу формулы в значения, умную таблицу в обычную, пробую отфильтровать таблицу только там где нужна обработка, а потом обработанное скопировать обратно, но пока не очень выходит. Примерно 30 сек выходит, интересно почему так медленно, может другой разделитель указать или как-то обойти его можно. Я так понял если отфильтровать он все равно всю таблицу будет просматривать
VBA макрос вставляет строку на основе данных из ячейки
 
Спасибо огромное это то что нужно, а можно ее как то ускорить?
VBA макрос вставляет строку на основе данных из ячейки
 
Спасибо за потраченное время, видимо я не смог правильно описать задачу. У меня задача найти все строки в колонке ID где есть "," и от дублировать их а в колонку SKU добавить в конце текста ID.
VBA макрос вставляет строку на основе данных из ячейки
 
Заметил еще одну проблему в макросе, добавляется только второй столбец, то есть все остальные данные остаются. Вот файл пример.
лист "фрагмент для теста" часть прайс-листа для тестирования протягивать можно со второй строки
лист "как должно быть" вручную создан для примера какой результат хотелось бы получить
VBA макрос вставляет строку на основе данных из ячейки
 
Привет друзья, есть умная таблица (прайс-лист) примерно 500 строк и 20 колонок, вся она создана на основе данных других с др  листов. Обновляю я ее протягиванием и выглядит примерно так:

SKUID NAME QTY тд
12323 HJWW001,HJWW003 text 5 text
Задача в столбце B(2) она же ID при нахождении запятой, дублировать
строку соответственно количеству запятых, в колонке SKU менять на SKU + ID а в колонке B оставлять только один ID вот так:

SKU ID NAME QTY тд
 12323-HJWW001 HJWW001 text 5 text
 12323-HJWW003 HJWW003 text 5 text
Я нашел код, который работает, но у него есть минусы, поэтому прошу помощи в доработке
1. самое главное он очень сильно тормозит
2. если в колонке ID если ошибка (#N/A и тд ) то он не может обработать и вылетает

Код
Sub ExpandRows()
  Dim a As Variant, vals As Variant
  Dim i As Long, rws As Long
  
  Application.ScreenUpdating = False
  With Range("A3:B" & Range("A" & Rows.Count).End(xlUp).Row)
    a = .Columns(2).Value2
    For i = UBound(a) To 1 Step -1
     ' vals = Split(Mid(a(i, 1), 2, Len(a(i, 1)) - 2), ",")
       vals = Split(a(i, 1), ",")
      rws = UBound(vals) + 1
      If rws > 1 Then
        .Rows(i + 1).Resize(rws - 1).Insert
        .Rows(i).Copy Destination:=.Rows(i).Resize(rws)
      End If
   .Cells(i, 2).Resize(rws).Value = Application.Transpose(vals)
   ' .Cells(i, 13).Resize(rws).Value = Destination.Resize(UBound(vals, 2) + 1, UBound(vals, 1) + 1) = Application.Transpose(vals)
   
     
    Next i
  End With
  Application.ScreenUpdating = True
  End Sub
СПАСИБО
VBA массив для отфильтрованных данных
 
Сообственно файл с примером
Range().SpecialCells(xlCellTypeVisible).Value - к сожалению не работаеи
VBA массив для отфильтрованных данных
 
Уважаемые спецы, это макрос аналога ВПР который я нашел на форуме, подскажите как можно исправить код, чтоб он корректно работал с отфильтрованными данными, сейчас данные  для сравнения забираются с W2 какие бы строки не были отфильтрованы.  Спасибо!
Код
  a = Range(.[w2], .Range("W" & iLastrow)).Value
а вот полный код
Код
Sub Macro4()


Dim a, b, c, iLastrow As Long, i As Long, ii As Long
 

   Selection.AutoFilter Field:=1, Criteria1:="add4"

   
    With Worksheets("Proj1")
   
        iLastrow = .Cells(Rows.Count, 23).End(xlUp).Row
        a = Range(.[w2], .Range("W" & iLastrow)).Value
 
         
    End With

    With Worksheets("base")
        iLastrow = .Cells(Rows.Count, 5).End(xlUp).Row 
       b = Range(.[e2], .Range("Y" & iLastrow)).Value 
     
    End With

    
    ReDim c(1 To UBound(a), 1 To 20)

    With CreateObject("Scripting.Dictionary")
    
    
        For i = 1 To UBound(b)
            .Item(b(i, 1)) = i
        Next

       
           For i = 1 To UBound(a)
           
            If .exists(a(i, 1)) Then
                c(i, 1) = b(.Item(a(i, 1)), 2)
                c(i, 2) = b(.Item(a(i, 1)), 3)
                c(i, 3) = b(.Item(a(i, 1)), 4)
                c(i, 4) = b(.Item(a(i, 1)), 5)
                c(i, 5) = b(.Item(a(i, 1)), 6)
                c(i, 6) = b(.Item(a(i, 1)), 7)
                c(i, 7) = b(.Item(a(i, 1)), 8)
                c(i, 8) = b(.Item(a(i, 1)), 9)
                c(i, 9) = b(.Item(a(i, 1)), 10)
                c(i, 10) = b(.Item(a(i, 1)), 11)
                c(i, 11) = b(.Item(a(i, 1)), 12)
                c(i, 12) = b(.Item(a(i, 1)), 13)
                c(i, 13) = b(.Item(a(i, 1)), 14)
                c(i, 14) = b(.Item(a(i, 1)), 15)
                c(i, 15) = b(.Item(a(i, 1)), 16)
                c(i, 16) = b(.Item(a(i, 1)), 17)
                c(i, 17) = b(.Item(a(i, 1)), 18)
                c(i, 18) = b(.Item(a(i, 1)), 19)
                c(i, 19) = b(.Item(a(i, 1)), 20)
                c(i, 20) = b(.Item(a(i, 1)), 21)
            
            End If
        Next
    End With

    With Worksheets("Proj1")   
   
        .[x2].Resize(UBound(c), 20) = c 
        .Activate
    End With

 
End Sub
Страницы: 1
Наверх