|
|
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Фильтрую по 2 колонкам, причём в 3-ем столбце применяю одновременно 2 критерия. Алгоритм не работает, однако если использовать 1 критерий (в 3-ем столбце) и 1 критерий в 10-ом столбце, то всё в порядке. Подскажите, пожалуйста, где я ошибся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 19:29:41 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
nPUBET Вместо Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 23:28:18 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
lena_### Вместо Код: plaintext Код: plaintext Спасибо. Получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 11:10:10 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. Дальше не смог сформулировать. Пытаюсь сделать следующее: - в цикле Код: plaintext Подскажите, пожалуйста, как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 13:15:36 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Нужен другой алгоритм. Предлагаю так. Организовываем доп. столбец (в примере - "M") в который вставляем формулу "ABS", дальше делаем сортировку по доп. столбцу и столбцу "K" ("No.") после этого устанавливаем фильтр и делаем пробег по отфильтрованным строкам с проверкой, на раменство, предыдущей ячейки с последующей и если они равны накапливаем в массив, а после пробега удаляем. А затем очищаем доп. столбец. Мда... Вообщем разберись с кодом. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 16:17:52 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
vkodor Спасибо за алгоритм! ...извиняюсь, я немного не так обьяснил... 1. Сортирую. 2. Перехожу в 3-й столбец ("Участок"). 3. Ищу в этом столбце одинаковые номера по следуюшему критерию Код: plaintext 1. 4. Образую области обработки для каждого номера по критерию отдельно (на рисунке они - разными цветами). - т.е. с 2-ой по 9-ю строки - это номера, которые подходят под номер "C10001-А*" (см. рис.) - с 10-ой по 15-ю строки - "E10399-K*" - с 16-ой по 45-ю строки - "C10145-A*" 5. Если номер в 3-ем столбце нижней строки не подходит по критерию, перехожу в 11-ый столбец (т.е. иду с 9 строки 3-го столбца во 2-ю строку 11-го столбца - т.к. область обработки для "C10001-А*" находится в промежутке с 2-ой по 9-ую строки). 6. Здесь (т.е. только для "C10001-А*") ищу одинаковые значения в абсолютном выражении. 7. Eсли сумма 2-х значений (одинаковых в абсолюте) равна нулю (в суммировании участвуют только две ячейки), то строки с этими значениями удаляю. В итоге, если всё просчитаю, от строк на рисунке останется только две. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 17:05:40 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Помойму то что я написал подойдет, только удаление надо подправить Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 17:18:42 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
работает только критерий надо подправить Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 17:39:15 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
...у меня такой pезультат: остается 3 строки (см. рис.). Я многое в VBA пока не понимаю. Объясни, пожалуйста, что выполняется в отдельных строках Твоего алгоритма (выделил по частям). 1 Часть: Код: plaintext 1. 2. 3. 4. 5. 2 Часть: Код: plaintext 1. 2. 3. 3 Часть: Код: plaintext 1. 2. 4 Часть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 5 Часть: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 18:49:24 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Файл с тремя строками... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 19:09:00 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. Error 1004 (Autofilter method of Range Class). Подскажите, пожалуйста, как фильтровать столбцы динамически, т.е. по названию столбца, не используя в "Field:=" числа, а названия столбцов. Файл с "Еrror 1004" приложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 12:54:23 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
1 Часть: Код: plaintext 1. 2. 3. 4. 5. For Each fil In .AutoFilter.Filters - пробег по всем колонкам фильтра If fil.On Then .ShowAllData: Exit For - если колонка отфильтрована то снимаем фильтр со всех колонок и выходим из цикла 2 Часть: Код: plaintext 1. 2. 3. 3 Часть: Код: plaintext 1. 2. присваиваем переменной "rng" не скрытые (xlCellTypeVisible) ячейки столбца "М" For Each rng2 In rng - присваиваем поочереди переменной rng2 ячейки из переменной rng 4 Часть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 5 Часть: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 13:30:17 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
vkodor1 Часть: Код: plaintext 1. Спасибо! ...может у Тебя есть идеи по "...Range("a1").AutoFilter Field=.." не по числам? nPUBET, 19.09, 12:54 cм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 13:52:25 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
идея только одна, поскольку невозможно в свойстве Field обращаться не по номеру, надо через find искать номер столбца. примерно так Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 15:55:21 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
vkodorидея только одна, поскольку невозможно в свойстве Field обращаться не по номеру, надо через find искать номер столбца. примерно так Код: plaintext 1. 2. 3. Спасибо за идею! Пока у меня выглядит так. Cортирует, но строки не удаляет (думаю, дело в номерах столбцов). Поэтому cейчас занимаюсь заменой номеров и букв столбцов (11, 13, 15, "M2:M", "K2",...) на iPT. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 16:38:54 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. Вычисления =ABS(RC[-22])= делаю в 33-ом столбце (на всякий случай). Код наверху работает. А вот вариант строки внизу не проходит. .Range(.Cells(2, 33), .Cells(.Cells(Rows.Count, iNo).End(xlUp).Row, 33)).FormulaR1C1 = "=ABS(RC[Cells(2,iNo)])"Т.е не могу привязать =ABS(RC[-22])= к переменной =iNo=. Как связать =ABS(RC[-22])= с переменной =iNo=? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 19:05:35 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 08:45:44 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
vkodor Код: plaintext Большое спасибо! Вот работает... Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 19:17:48 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Часть верхнего алгоритма =Sub OTRIC_2()= Код: plaintext 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. выдаёт ошибку:"Переменная =iAB= должна иметь тип Variant или Object". Подскажите, пожалуйста, как активировать =Sub Udalenie()= только для переменных =iAB=? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 12:09:38 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. Подскажите, пожалуйста, как активировать =Sub Udalenie()= только для переменных =iAB=? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 12:51:46 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
nPUBET выдаёт ошибку:"Переменная =iAB= должна иметь тип Variant или Object". iAB = .Range("1:1").Find("AB*", LookIn:=xlFormulas, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True).Column здесь используется метод "find" обьекта "Range" и возвращается номер столбца "Column" следовательно переменная д.б. long, но если метод "Find" не найдет нужного значения (в данной ситуации "AB*"), то будет вызываться ошибка, поэтому обычно делают так: объявляют переменную типа range Код: plaintext Код: plaintext 1. Код: plaintext 1. nPUBET Подскажите, пожалуйста, как активировать =Sub Udalenie()= только для переменных =iAB=? Это как? Что-то не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 13:42:21 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
vkodor nPUBET Подскажите, пожалуйста, как активировать =Sub Udalenie()= только для переменных =iAB=? Это как? Что-то не понятно. ....запускаю =Sub OTRIC_2()= (всего около 10.000 строк, после сортировки остаётся видимых строк около 100), не могу дождаться конца (жду 6 минут, потом принудительно прерываю). Т.е. =Sub OTRIC_2()= для 40 строк очень хорош, а вот если строк немного побольше (ок. 10.000) - то он уже не так эффективен. Понимаете, пытаюсь сделать следующее: 1. Сортирую 2. Считаю по функции ="=ABS(RC[" & iNo - 33 & "])"= в 33-ом столбце. 3. Смотрю в столбец под номером =iAB=: - если в этом столбце есть ячейки со значением =T?2=, тогда удаляю эти строки; - если значение другое, прохожу мимо. Т.е. хотел бы запускать =Sub Udalenie()= в =Sub OTRIC_2()= только для видимых строк. Mожет это возможно как-то через Cells.SpecialCells(xlCellTypeVisible)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 14:17:28 |
|
||
|
Автофильтр
|
|||
|---|---|---|---|
|
#18+
nPUBET Mожет это возможно как-то через Cells.SpecialCells(xlCellTypeVisible)? Конечно можно, и это у тебя уже было. Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 14:46:56 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=263&tid=2182184]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
200ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 459ms |

| 0 / 0 |
