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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение массивов через цикл - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Заполнение массивов через цикл
Xpert Дата: Пятница, 10.09.2021, 18:21 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 117
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приветствую всех форумчан!
Столкнулся с проблемой следующего характера:
имеется столбец с данными вида:
1-3
5
10
4-7
и т.д.
хочу разделить эти данные(разделитель "-")и загнать их в два одномерных массива. В одном будут данные, которые находятся до разделится, во втором те. которые после него.
Однако код ниже работает некорректно.
[vba]
Код

Sub test()
Dim rng As Range, cell As Range, c As String, d As String, k As String, i&, myarr(1 To 5), arr(1 To 5)
Set rng = ActiveSheet.Range("I9:I13")
On Error Resume Next
For Each cell In rng
d = InStr(cell, Chr(45))
c = Left(cell, d - 1)
If d = 0 Then
c = cell: k = cell
End If
k = Right(cell, d - 1)
For i = 1 To 5
myarr(i) = c
arr(i) = k
Next
Next
End Sub
[/vba]
Прошу помощи!


Сообщение отредактировал Xpert - Пятница, 10.09.2021, 18:22
 
Ответить
СообщениеПриветствую всех форумчан!
Столкнулся с проблемой следующего характера:
имеется столбец с данными вида:
1-3
5
10
4-7
и т.д.
хочу разделить эти данные(разделитель "-")и загнать их в два одномерных массива. В одном будут данные, которые находятся до разделится, во втором те. которые после него.
Однако код ниже работает некорректно.
[vba]
Код

Sub test()
Dim rng As Range, cell As Range, c As String, d As String, k As String, i&, myarr(1 To 5), arr(1 To 5)
Set rng = ActiveSheet.Range("I9:I13")
On Error Resume Next
For Each cell In rng
d = InStr(cell, Chr(45))
c = Left(cell, d - 1)
If d = 0 Then
c = cell: k = cell
End If
k = Right(cell, d - 1)
For i = 1 To 5
myarr(i) = c
arr(i) = k
Next
Next
End Sub
[/vba]
Прошу помощи!

Автор - Xpert
Дата добавления - 10.09.2021 в 18:21
doober Дата: Пятница, 10.09.2021, 20:53 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 970
Репутация: 332 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.[vba]
Код
Sub test()
    Dim rng As Range, cell As Range, c As String, d As String, k As String, i&, myarr, arr
    Set rng = ActiveSheet.Range("I9:I13")
    A = rng.Value
    ReDim myarr(1 To UBound(A))
    ReDim arr(1 To UBound(A))
    For i = 1 To UBound(A)
        d = A(i, 1)
        Z = Split(d, "-")
        If d <> "" Then
            myarr(i) = Z(0)
            arr(i) = Z(UBound(Z))
        End If
    Next
End Sub
[/vba]




Сообщение отредактировал doober - Пятница, 10.09.2021, 20:53
 
Ответить
СообщениеЗдравствуйте.[vba]
Код
Sub test()
    Dim rng As Range, cell As Range, c As String, d As String, k As String, i&, myarr, arr
    Set rng = ActiveSheet.Range("I9:I13")
    A = rng.Value
    ReDim myarr(1 To UBound(A))
    ReDim arr(1 To UBound(A))
    For i = 1 To UBound(A)
        d = A(i, 1)
        Z = Split(d, "-")
        If d <> "" Then
            myarr(i) = Z(0)
            arr(i) = Z(UBound(Z))
        End If
    Next
End Sub
[/vba]

Автор - doober
Дата добавления - 10.09.2021 в 20:53
Xpert Дата: Понедельник, 13.09.2021, 11:59 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 117
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
doober, спасибо большое, всё работает!
 
Ответить
Сообщениеdoober, спасибо большое, всё работает!

Автор - Xpert
Дата добавления - 13.09.2021 в 11:59
  • Страница 1 из 1
  • 1
Поиск:

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