powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel заполнение столбца в соответствии с даными другого столбца
12 сообщений из 12, страница 1 из 1
Excel заполнение столбца в соответствии с даными другого столбца
    #37778669
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Копаю по форуму, но пока не могу сформулировать правильно запрос для поиска или просто подходящего варианта нет.
Вопрос весьма простой, но не хватает знаний в области vba.
Я больше по php или sql... Но нужен именно vba для Excel.

Можно ли создать двумерный массив или два массива и сравнивать данные из столбца допустим F и если значение в нем находится 3.1.4. менять столбец H на 45, если 2.5.1 то на 24... И так весьма много возможных данных.

На php бы я это сделал как то так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
findAr = array(
  '3.1.4' => 45,
  '2.5.1' => 24,
)
for(i=2; i<count; i++) {
   if(in_array('F'.i, findAr)) {
      H.i = findAr['F'.i];
   }
}



Очень не хочется делать громоздкое if подобное сравнение данных из ячейки в ячейку...
Код: vbnet
1.
2.
3.
For i = 2 To ActiveSheet.UsedRange.Rows.Count
   If Cells(i, F).Value = "3.1.4" Then Cells(i, H) = 45...
Next
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37778929
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нужен именно VBA ? Формулами пользоваться нельзя? ADODB тоже использовать нельзя?
А то ведь данная задача - решается достаточно просто:
- либо формулами листа ВПР(), ПРОСМОТР(), либо консрукцией ИНДЕКС(ПОИСКПОЗ(...
- либо с помощью ADO и SQL-запроса, с выгрузкой конечного рекордсета в нужное место листа.
Естественно, в обоих случаях нужно иметь где-то в книге табличку-справочник соответствия кодов.

Или вам что, готовый пример нужен?
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37778953
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Нет, мне нужна подсказка, как подобная конструкция может быть реализована.
Ограничение состоит в том, что столбец получатель должен быть заполнен не формулой, а статическими данными.
В наличии у пользователя исключительно Excel. И желательно все это потом в надстройку забить, дабы нельзя было случайно удалить или еще чего. Да и пользователю так удобнее, чем лазить по макросам...

Надстройку я сделаю. Не в первый раз.
В целом с использованием select case я уже реализовал...
Но хочется по человечески все сделать.
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37778961
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю смысла, чем формулы не подходят... Можно ведь сделать такой макрос - наложить формулы на столбец, рассчитать, заменить формулы их значениями.
Ну или, как сказано во втором пункте - используйте ADODB и запрос.
Вопросы-то только такие - что вы там "в надстройку" забивать собрались? И почему пользователи не должны "ползать по макросам", если реализация - на VBA , что макросы и предполагает...
Или всё же у вас дело очень интересное, но вы половину умалчиваете... Например, соответстве замен "код-код" вы желаете хранить отдельно, "в надстройке", а у пользователя чтобы только происходила замена?
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37778978
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

А можно результат расчета формулы сделать статическим?
Не подходит формула, потому что данные в дальнейшем из Excel идут в другой отдел. И что там с ними делают, я точно не знаю.
Пользователь не должен лазить по макросам в силу своих знаний. А так же столбцы могут меняться, не всегда будет один и тот же столбец для входа и может быть другой столбец для выхода. В форме я предлагаю Пользователю ввести эти данные и нажать на кнопку. Пускай задача весьма мала, но смысл есть исключительно для удобства пользования. Коды они знают, но в ручную каждый раз забивать долго, а времени и так мало порой остается. Но да, весь смысл забить данные одного столбца в соответствии с данными другого и на этом все.

Если ADODB применить, данные ж должны быть из базы данных, которая обработает sql запрос.
Да, это было бы замечательно, sql запрос весьма простая вещь в таком случае. Но Excel то сам по себе не БД.
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779054
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первые ваши рассуждения я как-то не понял...
"Лазить по макросам" - не предлагается. Предлагается забить куда-то справочник соответствия кодов и значений, сделать, так сказать, отдельную таблицу. Где она будет - на отдельном листе, в другом файле, в другой БД - ваше дело.
Если "столбцы меняются" - как раз проще научить пользователей функции ВПР(). И перед сохранением-передачей файла - замене формул на значения. Всё.
Ладно, имея заведенную единую табличку подстановки значений на коды - можете сделать макрос и подвесить его в меню/на кнопку/на форму. Будете спрашивать столбик с данными и столбик для подстановки - и хоть заизменяйтесь. Что делать в этом макросе - я уже выше сказал. Как делать - вам показывать надо? Хорошо, один из примеров во вложении.

насчет ADODB - откуда вы взяли, что "данные должны быть из базы данных"??
Данные должны быть из источника данных , а что в этом (или нужном вам) случае служит источником - определяется провайдером подключения. Хоть таблицы релиционной СУБД, хоть файловая БД, да хоть текстовый файл с разделителями... Тем более, почему вы думаете, что книги Excel не могут служить источником данных?
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779228
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Спасибо за пример. Буду разбираться.

На счет ADODB, мало знаком с подобными объектами.
Судил исключительно по Вашему предложению о создании объекта ADODB и наложить к нему sql запрос.
Попробую поискать какую-нибудь справку по данному объекту.
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779322
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Кстати, если не секрет. Обратиться к именованному диапазону надстройки возможно? Или нужно исключительно подключиться к какой нить абстрактной базе данных в определенном местоположении? А то все range или sql строятся на заранее подключенном файле с БД.
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779365
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТО есть вы хотите всё-таки таблицу соответствия забить в надстройку, поименовать её; надстройка, как я понимаю, у вас подключается пользователям автоматом... Ну так в надстройку же и забейте паблик-процедуру, которая будет получать хоть номера столбцов, хоть объекты-диапазоны, и заполнять их...

И, кстати, почему "строятся на заранее подключенном файле"?
Код: vbnet
1.
2.
3.
4.
dim cn
set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Excel Driver (*.xls)};Dbq=" & Application.FullName
...
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779410
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Немного не корректно сформулировал. На подключенном файле вообще. Т.е. просто написать мол ActiveSheet или Sheet(1) нельзя.
У Вас наверно небольшая ошибка в строке подключения, xla же разрешение у надстроек...

Ну по сути так и получается, что она подключается сама к себе через подключение файла.
Ошибок такая "рекурсия" не может вызвать? Той же рекурсии вызвать не может?

З.Ы. Пока попробовать не могу...
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779591
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Quieteroks,
в ВБА тоже можно быстро обрабатывать данные в массивах, даже может быстрее получится, чем через запрос.
Но по Вашему объяснению я задачу в целом не вижу... Что из чего нужно получить, и зачем всё это делается?
...
Рейтинг: 0 / 0
Excel заполнение столбца в соответствии с даными другого столбца
    #37779593
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Quieteroks,
в ВБА тоже можно быстро обрабатывать данные в массивах, даже может быстрее получится, чем через запрос.
Но по Вашему объяснению я задачу в целом не вижу... Что из чего нужно получить, и зачем всё это делается?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel заполнение столбца в соответствии с даными другого столбца
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]