Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 36
Excel

Как автоматически исправить введенную кодировку товара и найти соответствующую строку в другом списке?

27.07.2018, 14:22. Показов 1076. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На отдельном листе имеется перечень (пример: лист "Max" в файле), с кодовым названием и наименованием на отдельных столбах, их в оригинале более 3000.

Нужный макрос должен вернуть номер строки из листа "Max" по коду введенному в столбец «Kod» на листе “Qayd”. (Раньше пользовался формулой листа ВПР )

Нюансы:
1) Для удобства и быстродействия код в лист "Qayd" вводится в укороченном виде, который нужно привести в вид соответствующий в списке (раньше исправлялся с помощью формул листа и VBA).
Например,
если вводил "a1", через формулы он исправлялся на "а001";
если вводил просто "2" – исправлялся, например, на "h002" (отсутствующую букву макрос берет из предыдущей строки)

2) Кроме того, имеются другие коды, которые имеют вид отличный от основного, например, “sss”, “ter”, “ts001” … для двух первых из них нужна другая дальнейшая процедура.
3) Планирую ввести код для различных версий файла, например с таким видом, “a001v1”, “ a001v2”, в этом случае макрос должен вернуть номера строк всех версий, если не введена конкретная версия.

4)введенные через дефис цифры или код вида “а1-12” должны быть заменены на серию “a001”, “a002” …”a012” .
Хотел это реализовать полностью через VBA, потому как старый подход с формулами уже не отвечает возникшим потребностям.
Не могу сообразить, как можно добится этого.
Пробовал использовать Asc(Mid(…)) для определения символа, но дальше не смог додумать.
Вложения
Тип файла: xlsx Пример таблицы.xlsx (99.5 Кб, 2 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.07.2018, 14:22
Ответы с готовыми решениями:

Найти в одном списке максимальный элемент, а в другом списке соответствующий ему по индексу
Здравствуйте! Помогите решить задачу - есть два cписка a = и b = . Необходимо найти из списка 'a' максимальное значение, а из списка 'b'...

Как сделать так, чтобы выбранное в одном списке имя не отображалось в другом списке
Добрый день, хочу попросить вашей помощи: Есть таблица Эксель в ней идёт диапазон имён Ячейки А1:Миша; А2:Петя; А3: Ваня и так далее ...

Необходимо найти максимальный элемент в списке параметров,подскажите как исправить?
У меня значение MAX не изменяется почему-то. #include "stdafx.h" #include <iostream> #include <conio.h> #include...

1
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 36
27.07.2018, 16:28  [ТС]
5) Еще в старой версии когда то была функция, когда при вводе "+" (или "-") вставлялся следующий (предыдущий) в списке код, например если в первой строке был "а002", вводимый "+" во второй замещался с кодом "а003", а "-" на "а001".

Добавлено через 7 минут
6) Ошибочно введенный на русской раскладке код нужно было заменить на латиницу, на это нашел в сети код, слегка изменил, по предварительной проверке не нашел ошибок, хочу оставить таким:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub KillCyr()
 
   Dim Rus As Variant
    Dim Eng As Variant
    Dim i As Double
    Dim j As Double
    Dim simb As String
    Dim FindLatin As Boolean
    Dim simbtrans As String
    Dim MergeText As String
    Dim txt As String
    
    Eng = Array("a", "b", "c", "e", "k", "m", "n", "h", "o", "p", "t", "u", "y", "A", "B", "E", "K", "M", "O", "P", "C", "T", "H", "Y", "D", "P", "B")
    Rus = Array("à", "â", "ñ", "å", "ê", "ì", "í", "í", "î", "ð", "ò", "è", "ó", "À", "Â", "Å", "Ê", "Ì", "Î", "Ð", "Ñ", "Ò", "Í", "Ó", "Â", "Ç", "È")
    
    row = ActiveCell.row                             'добавленная мной строка
    Codetxt = ActiveSheet.Cells(row, 5).Value     'добавленная мной строка
        
        For i = 1 To Len(Codetxt)
        simb = Mid(Codetxt, i, 1)
        FindLatin = False
        For j = 0 To 26
            If Rus(j) = simb Then
                simbtrans = Eng(j)
                FindLatin = True
                Exit For
            End If
        Next
        If FindLatin Then MergeText = MergeText & simbtrans Else MergeText = MergeText & simb
    Next
     
    
    ActiveSheet.Cells(row, 5).Value = MergeText     'добавленная мной строка
 
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2018, 16:28
Помогаю со студенческими работами здесь

Как автоматически распознавать кодировку в файле: DOS или ANSI
Добрый день! Программа обрабатывает файлы. В основном, файлы кодировки DOS (CP866), но могут быть и в кодировке ANSI (CP1251)....

Как автоматически определить кодировку при открытии текстового файла?
Есть прорамма типа блокнот. Для текста используется RTB. После открытия файла у пользователя есть возможность поменять кодировку в...

Вывод в форму цены товара автоматически при вводе названия товара
Уважаемые! У меня большая просьба помочь в конкретной задачи: Создаю форму Аццес, При заполнении формы я должен занести наименование...

В файле найти строку, введенную пользователем
Нужно только условие которое проверит существование строки в файле

Найти наименьший элемент матрицы и напечатать соответствующую строку
Дано матрицу размерности M x N. Числа вводятся с помощью генератора случайных чисел в диапазоне от -50 до 50. Найти наименьший элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru