|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] распределение по столбцам |
|
2010 - [решено] распределение по столбцам
|
Пользователь Сообщения: 77 |
Профиль | Отправить PM | Цитировать
Уважаемые форумчане, помогите, пожалуйста.
Смотрите, в экселе желтым выделила три категории red,green,grey Каждая категория имеет подкатегории например для green "Чистая прибыль" 1 458 тыс. руб "Размер непогашенного обязательства не превышает "300 000 руб "Нет в реестре массовых руководителей" "Чистая прибыль" 1 814 тыс. руб ... ... Но проблема в том, что они идут неструктурировано наппример для одной компании "Чистая прибыль" в столбце green1, а для другой в green2. Ну просто не по порядку для каждой компании вбивали, видимо данные, вот так и получается черти как расположены. Можно ли каждую такую категорию встроить в отдельный столбец и переписать туда значения, но чтобы согласовались наблюдения тут всего 11 наблюдений из 1500. |
|
Отправлено: 17:17, 07-07-2017 |
Модератор Сообщения: 16829
|
Профиль | Сайт | Отправить PM | Цитировать В каких строчках вашего файла ошибки? Вам не кажется, что некоторые данные просто сдвинуты?
|
------- Отправлено: 23:07, 07-07-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать okshef, здравствуйте! Нет они не сдвинуты. Немного поясню. Для фирм есть три категории опасности\
RED GREEN GREY Каждая категория представляет собой ряд показателей. Для GREEN их от 8-10 может быть.(чистая прибыль, дела о банкротстве...) Проблема в том, что для фирм они заполнялись в разных порядках Фирма 1: 1,4,5,6,8,2,3,4(это номера показателей) Фирма 2: 4,6,1,5,8,3 ... И так далее Задача перестроить эти показатели по порядку для каждой фирмы. Но с сохранением структуры наблюдений по другим показателям(помимо RED,GREY,GREEN есть другие колонки). Если я непонятно объяснила, Вы можете мне задавать уточняющие вопросы. |
Отправлено: 12:07, 08-07-2017 | #3 |
Модератор Сообщения: 16829
|
Профиль | Сайт | Отправить PM | Цитировать Elizavetta, чтобы выполнить задачу, нужно знать ВСЕ возможные критерии соотнесения событий к категориям и подкатегориям. Вот ваш текст
Цитата Elizavetta:
|
|
------- Отправлено: 14:50, 08-07-2017 | #4 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать okshef, я Вас поняла
Green Нет дел о банкротстве Размер непогашенного платежа Выручка Нет в реестре массовых руководителей Нет дисквалифицированных лиц Выиграны госконтракты Размещены госконтракты Нет в реестре недобросовестных поставщиков Red Чистый убыток Внеплановые проверки Нарушение по проверкам Grey Ответчик Истец Задолженность по исп.производствам Плановые проверки В реестре операторов персональных данных Нет в реестре малого и среднего бизнеса пример https://gyazo.com/eae544e864ac5ddbc407b90f18ddff77 |
|
Отправлено: 16:28, 08-07-2017 | #5 |
Динохромный Сообщения: 690
|
Профиль | Отправить PM | Цитировать Цитата Elizavetta:
Определенные типовые словосочетания раскиданы в произвольном порядке по столбцам, а вам нужно чтобы они были в одном конкретном столбце. Исхожу из предположения, что каждая строчка соответствует одной организации. Соответственно, хотите вы получить, судя по словам Цитата Elizavetta:
Например: ищем в строчке номер 1 фразу "Выручка" плюс некий текст после, если фраза в этой строчке есть - записываем найденное значение ячейки в этот столбец. Если задача такая, то решается она следующим образом (для вашего выложеного примера): в ячейку AT1 вбейте фразу "Выручка" без кавычек. В ячейку AT3 вбейте формулу =ЕСЛИОШИБКА(ИНДЕКС(A3:AS3;1;ПОИСКПОЗ($AT$1 & "*";A3:AS3;0));"") и протяните ее ниже. Если фразы в данной строчки нет, ячейка будет пустой, если фраза в данной строчке есть - в столбец AT будет вписано значение ячейки текущей строки, начинающейся с этого текста, включая и последующий текст, т.е. "Выручка 114 572 тыс. руб" и т.п. Для каждой фразы делаете аналогичный столбец, и так в нужном вам порядке. |
||
Отправлено: 13:58, 10-07-2017 | #6 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать a_axe,
вот этот код помог Sub ResortAttributesGreenGreyRed() 'отключение ненужных функций для ускорения работы макроса 'Prepare 'Объявление переменных Dim ilr, ilColmn, countaa As Long Dim CategoriesArr, TempArr As Variant Dim wb1, wb2 As String wb1 = ActiveWorkbook.Name 'Определение последнего столбца и строки ilColmn = Sheets(2).Cells(4, Columns.Count).End(xlToLeft).Column countaa = ilColmn / 2 ReDim CategoriesArr(1 To countaa, 1 To 6) For i = 2 To ilColmn Step 2 CategoriesArr(i / 2, 1) = Sheets(2).Cells(1, i).Interior.Color CategoriesArr(i / 2, 2) = Sheets(2).Cells(Rows.Count, i).End(xlUp).Row - 1 CategoriesArr(i / 2, 6) = Sheets(2).Cells(1, i - 1).Value Next i 'Окно выбора файла Application.Dialogs(xlDialogOpen).Show wb2 = ActiveWorkbook.Name ilr = Cells(Rows.Count, 2).End(xlUp).Row ilColmn = Cells(1, Columns.Count).End(xlToLeft).Column 'Определение ключевых столбцов For k = 1 To countaa For i = 1 To ilColmn If Cells(1, i).Interior.Color = CategoriesArr(k, 1) Then If CategoriesArr(k, 3) = Empty Then CategoriesArr(k, 3) = i Else If Cells(1, i + 1).Interior.Color <> CategoriesArr(k, 1) Then CategoriesArr(k, 4) = i End If End If End If Next i CategoriesArr(k, 5) = CategoriesArr(k, 4) - CategoriesArr(k, 3) + 1 Next k 'копируем лист Sheets(1).Copy After:=Sheets(1) Sheets(2).Select Sheets(2).Name = "Result" 'Добавляем результирующие столбцы For k = countaa To 1 Step -1 For i = 1 To CategoriesArr(k, 2) Columns(CategoriesArr(1, 3)).Select Selection.Insert shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Cells(1, CategoriesArr(1, 3)).Value = CategoriesArr(k, 6) & CategoriesArr(k, 2) - i + 1 Cells(1, CategoriesArr(1, 3)).Interior.Color = CategoriesArr(k, 1) Next i Next k 'определяем сдвиг после добавления стобцов Dim sdvig As Integer For Z = 1 To countaa sdvig = sdvig + CategoriesArr(Z, 2) Next Z 'корректируем границы исходных категорий после добавления стобцов For Z = 1 To countaa CategoriesArr(Z, 3) = CategoriesArr(Z, 3) + sdvig CategoriesArr(Z, 4) = CategoriesArr(Z, 4) + sdvig Next Z Dim tempInt As Integer 'запись в массив и обработка элементов по категориям tempInt = CategoriesArr(1, 3) - sdvig For i = 2 To countaa * 2 Step 2 ReDim TempArr(1 To CategoriesArr(i / 2, 2)) TempArr = Range(Workbooks(wb1).Sheets(2).Cells(2, i), Workbooks(wb1).Sheets(2).Cells(CategoriesArr(i / 2, 2) + 1, i)) For k = CategoriesArr(i / 2, 3) To CategoriesArr(i / 2, 4) For Z = 2 To ilr For T = 1 To CategoriesArr(i / 2, 2) If InStr(1, Cells(Z, k).Value, TempArr(T, 1)) > 0 Then Cells(Z, tempInt - 1 + T).Value = Cells(Z, k).Value End If Next T Next Z Next k tempInt = tempInt + CategoriesArr(i / 2, 2) Next i 'Удаляем исходные столбцы Range(Columns(CategoriesArr(1, 3)), Columns(CategoriesArr(countaa, 4))).Delete Ended End Sub Public Sub Prepare() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False Application.DisplayStatusBar = False Application.DisplayAlerts = False End Sub Public Sub Ended() Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True ActiveSheet.DisplayPageBreaks = True Application.DisplayStatusBar = True Application.DisplayAlerts = True End Sub |
Отправлено: 21:41, 11-07-2017 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как можно сделать выгрузку в Excel по столбцам | 8ash8 | Скриптовые языки администрирования Windows | 3 | 11-11-2015 18:29 | |
CMD/BAT - распределение файлов по папкам по списку | bellagio | Скриптовые языки администрирования Windows | 1 | 11-05-2014 13:14 | |
VBS/WSH/JS - [решено] Текст по столбцам. Excel. VBS | LilLoco | Скриптовые языки администрирования Windows | 22 | 03-04-2014 20:39 | |
Bandwith/Quota - Распределение вычисления по сети | Фартовый | Сетевые технологии | 6 | 27-03-2013 14:42 | |
[решено] Сортировка данных ListView по столбцам | malev | AutoIt | 3 | 16-10-2009 17:53 |
|