Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Из большой матрицы заполненных ячеек, сделать нужного размера 
:(
    Опции темы
olga90
Дата 5.11.2007, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



ячейки размером 20*30 заполнены числами в формате
5,9,84,45

Т.е. эмитация 3-ех мерного массива

так вот мне нужно из этих ячеек сделать срез значений по координатам x, у 
и номеру числа в (ну т.е. в 5,9,84,45) и поместить на другую страницу


как мне это сделать?
файл во вложении

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  SREZ.rar 15,63 Kb
PM MAIL   Вверх
Genyaa
Дата 5.11.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Усердный
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11



Я не понял, что подразумевается под "срез значений"...

Значит ли это, что нужно поместить на другой лист массив всех чисел, стоящих в исходной таблице на заданной позиции 3-ей координаты в каждой ячейке?

Если так... то не проще ли сразу генерировать значения в трехмерный массив? Если же проблема упирается в хранение и загрузку, то может подойдет какой-нибудь другой, более удобный и прозрачный способ хранить и загружать 3-х мерный массив так, чтобы потом с ним можно было работать как с трехмерным, а не "мучить себя" тем, чтобы всякий раз вновь и вновь распаковывать строковые значения наборов чисел из каждой ячейки?
--------------------
Всякое решение плодит новые проблемы.
PM WWW   Вверх
olga90
Дата 6.11.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



мне нужно получить новую матрицу размером среза, указанного в координатах Х и У

а значениями этой матрицы должны быть числа, номер которой указан
т.е. если есть матрица 4*4

1,6,84,77 | 78,18,14,3 | 88,8,7,6 | 6,36,45,69
8,15,4,66 | 46,48,45,33 | 74,48,47,66 | 16,6,5,1
45,48,8,9 | 5,99,47,73 | 82,78,70,60 | 66,3,4,2
78,96,89,7 | 96,55,12,39 | 98,38,67,46 | 46,12,44,3

и если задать 
Х=2
У=2
Z=3

должна получиться матрица
45;47;5
47;70;4
12;67;44

т.е. браться выделенные элементы
1,6,84,77 | 78,18,14,3 | 88,8,7,6 | 6,36,45,69
8,15,4,66 | 46,48,45,33 | 74,48,47,66 | 16,6,5,1
45,48,8,9 | 5,99,47,73 | 82,78,70,60 | 66,3,4,2
78,96,89,7 | 96,55,12,39 | 98,38,67,46 | 46,12,44,3
PM MAIL   Вверх
Akina
Дата 6.11.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Ну так и в чем проблема?

Этап 1: по заданным x и y отрезаешь требуемый кусок в массив (или пересчитываешь нужный Range)
Этап 2: для каждого элемента по заданному z выделяешь соотв. элемент
Этап 3: полученный массив (либо Range) вываливаешь в место назначения

Какой из этапов вызывает трудности?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 6.11.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



Цитата(Akina @  6.11.2007,  14:13 Найти цитируемый пост)
Ну так и в чем проблема?

Этап 1: по заданным x и y отрезаешь требуемый кусок в массив (или пересчитываешь нужный Range)
Этап 2: для каждого элемента по заданному z выделяешь соотв. элемент
Этап 3: полученный массив (либо Range) вываливаешь в место назначения

Какой из этапов вызывает трудности?


вообще то все, но особенно пункт 2 - т.к. на VBA я не пишу :(

дайте пожалуйста пример

PM MAIL   Вверх
Akina
Дата 6.11.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Код

Public Function ReturnElementByNumber(GroupOfData As String, Delimiter As String, Number As Integer) As String
Dim strTemp() As String
strTemp = Split(GroupOfData, Delimiter)
If (UBound(strTemp) < Number - 1) Or (Number < 0) Then
   ReturnElementByNumber = ""
Else
   ReturnElementByNumber = strTemp(Number - 1)
End If
End Function


Код функции пишем в модуль:
  • Меню - Сервис - Макрос - Редактор Visual Basic 
  • Меню - Insert - Module
  • Вставить в конец модуля указанный код

Теперь функцию можно использовать так же, как любую штатно-встроенную.

A1 = "12;34;56;78"
B1 = ReturnElementByNumber(A1; ";"; 2) = 34


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
olga90
Дата 6.11.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.