Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разнести данные по ячейкам - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разнести данные по ячейкам (Макросы/Sub)
Разнести данные по ячейкам
jurafenix Дата: Среда, 23.12.2015, 08:50 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Добрый день, уважаемые форумчане!)
Имеются данные в столбце А в формате, как в примере. Нужно, чтобы в случае, если в ячейке написано НЕТ, то ячейка не обрабатывалась, а если там есть цифры, то нужно каждый набор из 16 цифр разнести в ячейки на Листе2, как на примере. Строк в самом файле около 10000.

P.S. файл не могу выложить, т.к. на работе нет возможности выгружать файлы, поэтому пример разместил на облаке... Знаю, что по правилам нельзя, но прошу понять и простить... :(

Пример:

удален администрацией
[moder]Не, Правила для всех одинаковы


Сообщение отредактировал _Boroda_ - Среда, 23.12.2015, 09:28
 
Ответить
СообщениеДобрый день, уважаемые форумчане!)
Имеются данные в столбце А в формате, как в примере. Нужно, чтобы в случае, если в ячейке написано НЕТ, то ячейка не обрабатывалась, а если там есть цифры, то нужно каждый набор из 16 цифр разнести в ячейки на Листе2, как на примере. Строк в самом файле около 10000.

P.S. файл не могу выложить, т.к. на работе нет возможности выгружать файлы, поэтому пример разместил на облаке... Знаю, что по правилам нельзя, но прошу понять и простить... :(

Пример:

удален администрацией
[moder]Не, Правила для всех одинаковы

Автор - jurafenix
Дата добавления - 23.12.2015 в 08:50
Wasilich Дата: Среда, 23.12.2015, 11:13 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Строк в самом файле около 10000.
Для примера, сделайте в отдельном файле 5-10 строк и покажите, как есть как надо. Не обязательно оригинал выкладывать.
 
Ответить
Сообщение
Строк в самом файле около 10000.
Для примера, сделайте в отдельном файле 5-10 строк и покажите, как есть как надо. Не обязательно оригинал выкладывать.

Автор - Wasilich
Дата добавления - 23.12.2015 в 11:13
marryska_7 Дата: Четверг, 24.12.2015, 10:12 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ля примера, сделайте в отдельном файле 5-10 строк и покажите, как

вот муж сам не может выложить, а меня заставляет ради этого регистрироваться >( >(

вот пример. Очень просит о помощи и сожалеет о своих косяках... :)
К сообщению приложен файл: 1-2-.xlsx (9.7 Kb)
 
Ответить
Сообщение
ля примера, сделайте в отдельном файле 5-10 строк и покажите, как

вот муж сам не может выложить, а меня заставляет ради этого регистрироваться >( >(

вот пример. Очень просит о помощи и сожалеет о своих косяках... :)

Автор - marryska_7
Дата добавления - 24.12.2015 в 10:12
Kuzmich Дата: Четверг, 24.12.2015, 11:09 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
В модуль Лист1
[vba]
Код

Sub Digit16()
Dim i As Long
Dim j As Integer
Dim n As Long
Dim iLastRow As Long
Dim MyArr
   iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   n = 1
   Sheets("Лист2").Cells.ClearContents
   For i = 1 To iLastRow
    If Cells(i, 1) <> "НЕТ" Then
      MyArr = Split(Cells(i, 1), Chr(10))
      With Sheets("Лист2")
        For j = 0 To UBound(MyArr)
          .Cells(n, 1) = Mid(MyArr(j), 1, 16)
          n = n + 1
        Next
      End With
    End If
   Next
End Sub
[/vba]
 
Ответить
СообщениеВ модуль Лист1
[vba]
Код

Sub Digit16()
Dim i As Long
Dim j As Integer
Dim n As Long
Dim iLastRow As Long
Dim MyArr
   iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   n = 1
   Sheets("Лист2").Cells.ClearContents
   For i = 1 To iLastRow
    If Cells(i, 1) <> "НЕТ" Then
      MyArr = Split(Cells(i, 1), Chr(10))
      With Sheets("Лист2")
        For j = 0 To UBound(MyArr)
          .Cells(n, 1) = Mid(MyArr(j), 1, 16)
          n = n + 1
        Next
      End With
    End If
   Next
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 24.12.2015 в 11:09
marryska_7 Дата: Четверг, 24.12.2015, 14:35 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В модуль Лист1


Большое спасибо! hands
 
Ответить
Сообщение
В модуль Лист1


Большое спасибо! hands

Автор - marryska_7
Дата добавления - 24.12.2015 в 14:35
Roman777 Дата: Четверг, 24.12.2015, 17:33 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
А у меня получился код не такой привлекательный как у Kuzmich, (ибо я совсем не знаком с этой интересной ф-ей Split, терь буду знать, спасибо Kuzmich)
код в общий модуль
[vba]
Код
Sub Нет()
Dim i&, i_n&, k&, k1&, s&
Dim tabl() As String, tabl2() As String
Dim MyArr
i_n = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
ReDim tabl(i_n)
For i = 1 To i_n
  tabl(i) = Replace(Worksheets(1).Cells(i, 1), " ", "")
Next i
For i = 1 To i_n
  If InStr(tabl(i), Chr(13)) > 0 Then
  s1 = 0
    For s = 1 To Len(tabl(i))
       If InStr(Right(tabl(i), Len(tabl(i)) - s), Chr(13)) > 0 Then
          k = k + 1
          ReDim Preserve tabl2(k)
          Slovo = Right(tabl(i), Len(tabl(i)) - s - 1)
          Slovo1 = InStr(Right(tabl(i), Len(tabl(i)) - s), Chr(13))
          tabl2(k) = Left(Right(tabl(i), Len(tabl(i)) - s1), InStr(Right(tabl(i), Len(tabl(i)) - s1), Chr(13)))
          s1 = s1 + InStr(Right(tabl(i), Len(tabl(i)) - s1), Chr(13))
          s = s1
       Else
          If s < Len(tabl(i)) Then
              k = k + 1
              ReDim Preserve tabl2(k)
              tabl2(k) = Left(Right(tabl(i), Len(tabl(i)) - s1), Len(tabl(i)))
              Exit For
          End If
       End If
    Next s
  End If
Next i
For i = 1 To k
   tabl2(i) = Replace(Replace(tabl2(i), Chr(10), ""), Chr(13), "")
   Worksheets(2).Cells(i, 1).NumberFormat = "@"
   Worksheets(2).Cells(i, 1).Value = tabl2(i)
Next i
End Sub
[/vba]
Меня несколько удивляет, что без строки
[vba]
Код
   Worksheets(2).Cells(i, 1).NumberFormat = "@"
[/vba]
результат выводимый получается неправильный.... не пойму откуда такое).


Много чего не знаю!!!!
 
Ответить
СообщениеА у меня получился код не такой привлекательный как у Kuzmich, (ибо я совсем не знаком с этой интересной ф-ей Split, терь буду знать, спасибо Kuzmich)
код в общий модуль
[vba]
Код
Sub Нет()
Dim i&, i_n&, k&, k1&, s&
Dim tabl() As String, tabl2() As String
Dim MyArr
i_n = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
ReDim tabl(i_n)
For i = 1 To i_n
  tabl(i) = Replace(Worksheets(1).Cells(i, 1), " ", "")
Next i
For i = 1 To i_n
  If InStr(tabl(i), Chr(13)) > 0 Then
  s1 = 0
    For s = 1 To Len(tabl(i))
       If InStr(Right(tabl(i), Len(tabl(i)) - s), Chr(13)) > 0 Then
          k = k + 1
          ReDim Preserve tabl2(k)
          Slovo = Right(tabl(i), Len(tabl(i)) - s - 1)
          Slovo1 = InStr(Right(tabl(i), Len(tabl(i)) - s), Chr(13))
          tabl2(k) = Left(Right(tabl(i), Len(tabl(i)) - s1), InStr(Right(tabl(i), Len(tabl(i)) - s1), Chr(13)))
          s1 = s1 + InStr(Right(tabl(i), Len(tabl(i)) - s1), Chr(13))
          s = s1
       Else
          If s < Len(tabl(i)) Then
              k = k + 1
              ReDim Preserve tabl2(k)
              tabl2(k) = Left(Right(tabl(i), Len(tabl(i)) - s1), Len(tabl(i)))
              Exit For
          End If
       End If
    Next s
  End If
Next i
For i = 1 To k
   tabl2(i) = Replace(Replace(tabl2(i), Chr(10), ""), Chr(13), "")
   Worksheets(2).Cells(i, 1).NumberFormat = "@"
   Worksheets(2).Cells(i, 1).Value = tabl2(i)
Next i
End Sub
[/vba]
Меня несколько удивляет, что без строки
[vba]
Код
   Worksheets(2).Cells(i, 1).NumberFormat = "@"
[/vba]
результат выводимый получается неправильный.... не пойму откуда такое).

Автор - Roman777
Дата добавления - 24.12.2015 в 17:33
Manyasha Дата: Четверг, 24.12.2015, 17:49 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Roman777, максимальная разрядность числа в ячейке - 15. Хвостики заменяются нулями
вот это еще почитайте: http://www.excelworld.ru/forum/2-1093-1


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеRoman777, максимальная разрядность числа в ячейке - 15. Хвостики заменяются нулями
вот это еще почитайте: http://www.excelworld.ru/forum/2-1093-1

Автор - Manyasha
Дата добавления - 24.12.2015 в 17:49
_Boroda_ Дата: Четверг, 24.12.2015, 18:06 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Роман, Можно и без
Worksheets(2).Cells(i, 1).NumberFormat = "@"

Достаточно просто прилепить апостроф
[vba]
Код
Worksheets(2).Cells(i, 1).Value = "'" & tabl2(i)
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеРоман, Можно и без
Worksheets(2).Cells(i, 1).NumberFormat = "@"

Достаточно просто прилепить апостроф
[vba]
Код
Worksheets(2).Cells(i, 1).Value = "'" & tabl2(i)
[/vba]

Автор - _Boroda_
Дата добавления - 24.12.2015 в 18:06
Roman777 Дата: Четверг, 24.12.2015, 21:58 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, _Boroda_, Спасибо, буду знать).


Много чего не знаю!!!!
 
Ответить
СообщениеManyasha, _Boroda_, Спасибо, буду знать).

Автор - Roman777
Дата добавления - 24.12.2015 в 21:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разнести данные по ячейкам (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!