Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 18:14   #1
ARIRAN
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 12
По умолчанию как разделить значения ячеек по формату ячеек?

всем привет. такой вопрос. есть столбец типа:
1000 пар
2000 штук
3000 кг.
500 шт.
24 кг.
25 пар
и т.д.
нужно разделить пары, штуки килограммы и т.д. то есть чтобы было в одном столбце все пары во втором все килограммы и пр. проблема в том, что слова "пар" "штук" и остальные прописаны в форматах ячейки. если выделить любую ячейку то в поле где видно значение будет только число. как быть?
ARIRAN вне форума Ответить с цитированием
Старый 10.12.2009, 18:19   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

К примеру, это можно сделать макросом.

Это надо сделать один раз, или придётся делать регулярно?
Файл в студию.
EducatedFool вне форума Ответить с цитированием
Старый 10.12.2009, 18:30   #3
ARIRAN
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 12
По умолчанию

вот примерный файлик. а делать это придется регулярно. это будет выгружаемый из 1с отчет по продажам в екселе. для анализа отчета надо сгруппировать позиции по их единице измерения. то есть килограммы можно анализировать только с килограммами, а штуки с штуками.

в идеале конечно хорошо бы сделать еще подобие словаря чтоли. чтоб макрос понимал что кг. Ru? килограмм и килогр. это одно и то же. но пока вот хотя бы отделить килограммы от упаковок.

при этом отчеты будут каждый раз разные и единицы измерения соответственно тоже.
Вложения
Тип файла: rar test.rar (12.1 Кб, 22 просмотров)
ARIRAN вне форума Ответить с цитированием
Старый 10.12.2009, 19:27   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте такой вариант:

Код:
Sub test()
    Dim sh As Worksheet: Set sh = ActiveSheet: Application.ScreenUpdating = False
    Dim coll As New Collection, cell As Range, ra As Range

    Set ra = sh.Range(sh.[d10], sh.Range("d" & sh.Rows.Count).End(xlUp))
    On Error Resume Next
    For Each cell In ra.Cells
        cv = Trim(cell.Text)
        If UBound(Split(cv, " ")) = 1 Then txt = Split(cv, " ")(1): coll.Add txt, CStr(txt)
    Next cell

    Dim newsh As Worksheet, delra As Range
    For Each it In coll
        sh.Copy , sh: Set newsh = ActiveSheet
        newsh.Name = it: newsh.Tab.Color = vbGreen
        Set ra = newsh.Range(newsh.[d10], newsh.Range("d" & newsh.Rows.Count).End(xlUp))
        Set delra = newsh.Rows(newsh.Rows.Count)
        For Each cell In ra.Cells
            If Split(Trim(cell.Text), " ")(1) <> it Then
                Set delra = Union(delra, cell)
            End If
        Next cell
        delra.EntireRow.Delete
    Next
End Sub
Каждая единица измерения попадёт на отдельный лист

См. пример файла: (нажмите зеленую кнопку)

EducatedFool вне форума Ответить с цитированием
Старый 10.12.2009, 19:31   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Не забудьте перед запуском макроса отобразить ярлычки листов - обычно они скрыты для файлов, выгруженных из 1С.
EducatedFool вне форума Ответить с цитированием
Старый 11.12.2009, 15:25   #6
ARIRAN
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 12
По умолчанию

круто. делит по листам. а теперь (извините за идиотский вопрос) а как вставить этот код? просто в макросах я полный дуб. можно кинуть ссылкой на учебник для идиотов
ARIRAN вне форума Ответить с цитированием
Старый 11.12.2009, 15:30   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
а как вставить этот код?
  1. Копируем код в буфер обмена
  2. Нажимаем Alt + F11
  3. Нажимаем Ctrl + R, потом Enter
  4. Нажимаем Ctrl + V для вставки кода
  5. Ставим курсор в код, и нажимаем F5 для запуска макроса.

Можно сделать проще - начать запись макроса, указав в диалоговом окне, что макрос нужно сохранить в личной книге макросов.
При этом создастся эта самая личная книга макросов.
Теперь вставляем код в эту книгу, и назначаем макросу комбинацию клавиш.
После этого макрос будет доступен при каждом запуске Excel.

В качестве учебника могу посоветовать этот ресурс: http://msoffice.nm.ru/faq/macros.htm
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заливка автофигуры и значения ячеек Иванов_ДМ Microsoft Office Excel 9 23.09.2009 11:22
Копировать значения ячеек макросом torus Microsoft Office Excel 1 09.11.2008 00:15
запомнить значения ячеек dbgrid unit-85 Помощь студентам 4 22.10.2008 12:04