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

Вход

Регистрация

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

 

= Мир MS Excel/Создание массива из данных в столбце - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание массива из данных в столбце (Макросы/Sub)
Создание массива из данных в столбце
Sashagor1982 Дата: Понедельник, 08.02.2016, 21:07 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте, подскажите пожалуйста имеется столбец в который помещены определенные данные, но столбец имеет и пустые ячейки, как можно значения из столбца поместить в одномерный массив без пустых значений?
[vba]
Код
Sub PPPP()
    a = Range("A1:A100").Value
    
End Sub
[/vba]
Желательно без использования циклов..
К сообщению приложен файл: 2020.xls (35.5 Kb)


Сообщение отредактировал Sashagor1982 - Понедельник, 08.02.2016, 21:13
 
Ответить
СообщениеЗдравствуйте, подскажите пожалуйста имеется столбец в который помещены определенные данные, но столбец имеет и пустые ячейки, как можно значения из столбца поместить в одномерный массив без пустых значений?
[vba]
Код
Sub PPPP()
    a = Range("A1:A100").Value
    
End Sub
[/vba]
Желательно без использования циклов..

Автор - Sashagor1982
Дата добавления - 08.02.2016 в 21:07
Roman777 Дата: Понедельник, 08.02.2016, 21:48 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Sashagor1982, если принципиален такой метод что у Вас, но не принципиален порядок значений, можно сначала сделать сортировку по столбцу А а потом записать данные.
Но я бы предпочёл циклом:
[vba]
Код
Sub ppp()
Dim a()
Dim k&, i&

For i =1 to 100
if Cells(i,1)<>"" then
k=k+1
redim preserve a(k)
a(k) =Cells(i,1)
end if
next i
End Sub
[/vba]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 08.02.2016, 21:49
 
Ответить
СообщениеSashagor1982, если принципиален такой метод что у Вас, но не принципиален порядок значений, можно сначала сделать сортировку по столбцу А а потом записать данные.
Но я бы предпочёл циклом:
[vba]
Код
Sub ppp()
Dim a()
Dim k&, i&

For i =1 to 100
if Cells(i,1)<>"" then
k=k+1
redim preserve a(k)
a(k) =Cells(i,1)
end if
next i
End Sub
[/vba]

Автор - Roman777
Дата добавления - 08.02.2016 в 21:48
Kuzmich Дата: Понедельник, 08.02.2016, 21:56 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код

Sub Пробирка()
Dim a As Variant
    Range("A1:A100").SpecialCells(xlCellTypeConstants, xlTextValues).Copy Range("B1")
    a = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
    MsgBox UBound(a)
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код

Sub Пробирка()
Dim a As Variant
    Range("A1:A100").SpecialCells(xlCellTypeConstants, xlTextValues).Copy Range("B1")
    a = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
    MsgBox UBound(a)
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 08.02.2016 в 21:56
Sashagor1982 Дата: Понедельник, 08.02.2016, 22:30 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
А что бы Содержимое листа никак не изменялось можно, т.е что бы ничто никуда не копировалось?
 
Ответить
СообщениеА что бы Содержимое листа никак не изменялось можно, т.е что бы ничто никуда не копировалось?

Автор - Sashagor1982
Дата добавления - 08.02.2016 в 22:30
krosav4ig Дата: Понедельник, 08.02.2016, 22:42 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
^_^ [vba]
Код
Sub Пробирка()
    Dim rng As Range, a As Variant
    Set rng = Range("A1:A100")
    With Application
        a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle)))
        a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")")))
    End With
    MsgBox UBound(a)
    Erase a
    Set rng = Nothing
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 08.02.2016, 22:47
 
Ответить
Сообщение^_^ [vba]
Код
Sub Пробирка()
    Dim rng As Range, a As Variant
    Set rng = Range("A1:A100")
    With Application
        a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle)))
        a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")")))
    End With
    MsgBox UBound(a)
    Erase a
    Set rng = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 08.02.2016 в 22:42
Sashagor1982 Дата: Понедельник, 08.02.2016, 23:43 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Почему выдает ошибку?
[vba]
Код
Sub Ïðîáèðêà()
    Dim rng As Range, a As Variant
    Set rng = Range("A1:A100")
    With Application
        a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle)))
        a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")")))
    End With
    MsgBox UBound(a)
   ' Erase a
    Set rng = Nothing
    For ii = LBound(a) To UBound(a)
    MsgBox a(ii)
    Next
End Sub
[/vba]
Массив не заполнен..


Сообщение отредактировал Sashagor1982 - Понедельник, 08.02.2016, 23:45
 
Ответить
СообщениеПочему выдает ошибку?
[vba]
Код
Sub Ïðîáèðêà()
    Dim rng As Range, a As Variant
    Set rng = Range("A1:A100")
    With Application
        a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle)))
        a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")")))
    End With
    MsgBox UBound(a)
   ' Erase a
    Set rng = Nothing
    For ii = LBound(a) To UBound(a)
    MsgBox a(ii)
    Next
End Sub
[/vba]
Массив не заполнен..

Автор - Sashagor1982
Дата добавления - 08.02.2016 в 23:43
Sashagor1982 Дата: Понедельник, 08.02.2016, 23:48 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Наверное без цикла For Next и условия if then и без копирования в другие столбцы эту задачу не решить?
 
Ответить
СообщениеНаверное без цикла For Next и условия if then и без копирования в другие столбцы эту задачу не решить?

Автор - Sashagor1982
Дата добавления - 08.02.2016 в 23:48
krosav4ig Дата: Вторник, 09.02.2016, 03:00 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Почему выдает ошибку?

потому шо [vba]
Код
MsgBox a(ii, 1)
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Почему выдает ошибку?

потому шо [vba]
Код
MsgBox a(ii, 1)
[/vba]

Автор - krosav4ig
Дата добавления - 09.02.2016 в 03:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание массива из данных в столбце (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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