Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
VBA Удаление повторяющихся (дубликаты) значений. VBA https://www.cyberforum.ru/ vba/ thread2336887.html
Добрый день Уважаемые форумчане, Хочу спросить у вас помощи, возможно ли каким-либо образом упростить мой код. Что мне нужно сделать. Имеется 2 столбика, найти в этих столбиках повторяющиеся (дубликаты) значения и удалить их, со смещением ячеек наверх. Нужно именно удалять ячейки, а не полностью строку. Так как, есть дополнительная информация в других столбцах этой книги. Что я смогла...
Создание пользовательских функций, использующих общий код проверки (нужна подсказка) VBA
Как прописать в модуле VBA excel общий код проверки «корректности» массива (исходных данных), чтобы исключить его многоразовое повторение в других пользовательских функциях. Этапы • есть динамический массив, данные которого используются несколькими пользовательскими функциями • первоначально проверяется «корректность» заполнения массива по алгоритму, например используемому в коде...
VBA Универсальный поиск https://www.cyberforum.ru/ vba/ thread2336833.html
Здравствуйте! есть код: If Sheets("VIN_Значения").Range("VIN_Модель_наряд") = "нет" Then ПоследняяСтрока = Cells(Rows.Count, Range("Модель").Column).End(xlUp).Row ПоследнийVIN = Sheets("VIN_Значения").Cells(ПоследняяСтрока, Range("VIN_Модель").Column) Sheets("VIN_Значения").Cells(ПоследняяСтрока + 1, Range("Модель").Column) = НазваниеМодели ...
VBA Вытащить большое количество писем в один Word документ https://www.cyberforum.ru/ vba/ thread2336699.html
Добрый день, дорогие форумчане! Очень нужна Ваша помощь!! Мне нужно достать из outlook 800 писем в один вордовский документ (из-за объема - нужно сделать это как-то программно, макросом, копипаст - не вариант) долго рыл интернет, нашел такой код: Sub ExportMultipleEmails_OneWordDocument() Dim objFileSystem As Object Dim strTempFolder As String Dim objSelection As...
Каждому файлу doc свой пароль VBA
Добрый день! Есть папка с файлами doc. (ФИО1.doc, ФИО2.doc и т.д.) Возможно ли средствами vba перебрать все файлы и поставить каждому файлу свой пароль на открытие. Файлы будут меняться каждый месяц, но название будут такие же и пароль должен быть одинаковый в каждом месяце. Открыть и поставить пароль на все файлы одинаковый вроде так. Sub кол_вх() Dim s As String, fldr As String fldr =...
VBA Как макросом - вынести панель перехода на закладки - на отдельную форму Всем доброго времени суток. У меня есть вордовский документ (Ворд2003), в котором имеются закладки. Но работать с закладками тяжело. Каждый раз нужно заходить в меню "Вставка", там выбирать "Закладки"… и потом уже выбирать нужную закладку. А потом еще надо это окно закрывать. Как макросом - вынести панель перехода на закладки - на отдельную форму ? (Чтобы эта форма постоянно висела... https://www.cyberforum.ru/ vba/ thread2336614.html
VBA Как сохранить данные ListBox в файл? Если с TextBox все легко, Open "c:\count.xml" For Output As #1 Print #1, TextBox1.Text Close #1 то как быть с ListBox? https://www.cyberforum.ru/ vba/ thread2336516.html VBA Почему изменяется содержимое буфера обмена ?
После записи в буфер пустой строки "" она считывается корректно (scr1 ниже). Но после загрузки формы при первом же клике мышкой на текстбоксе (документ) содержимое буфера уже считано в виде строки с непонятными символами "??" (scr2). Изменений в буфер пальцами (Ctrl+Ins) или программно (PutInClipboard) не вносил. Откуда может это вылазить? ЗЫ: При копировании в буфер текста из другого окна...
VBA Выделение несмежных столбцов через равные промежутки, выделение столбцов с числами. И их форматирование (ширина и проч) https://www.cyberforum.ru/ vba/ thread2336387.html
Добрый день, форумчане! Прошу вашей помощи: Сейчас с помощью макроса привожу в надлежащий вид набор данных, сформировав из них таблицу и в ней чередуются столбцы с числами и датами (а,б,а,б,а,б...). Их много, так что выбирать руками не вариант. Требуется числа показывать с разделителями групп разрядов (сейчас разделителей нет), а также либо присвоить всем таким столбцам определенную ширину,...
VBA Выборка строки из диапазона ячеек и запись в textBox Есть код, как исправить его так, чтобы не было выхода за границу? В текстбокс нужно ввести строку из диапазона ячеек, каждое значение ячейки разделять "|", значение строки берется из счетчика, а последняя ячейка заканчивается после 20 пустых ячеек в диапазоне Row = TextBox1.Value Right = 2 Emp = 0 Do Emp = IIf(Cells(Row, Right).Value Is Nothing, Emp + 1, 0) Loop While Emp < 20 Right... https://www.cyberforum.ru/ vba/ thread2336364.html
VBA Очищать значения на листах (не затрагивая формулы)
Добрый вечер. Задача написать макрос который будет Очищать значения на листах (не затрагивая формулы) Скажите пожалуйста будет ли такой код корректным ? Sub ClearValues() Selection.SpecialCells(xlCellTypeConstants, 1).Select Selection.ClearContents End Sub
VBA Записать в массив E элементы массива М, стоящие на нечетных позициях
705 / 351 / 104
Регистрация: 09.02.2018
Сообщений: 798
25.10.2018, 22:50  [ТС] 0

Перевод адреса ячейки из одного формата в другой - VBA - Ответ 13002033

25.10.2018, 22:50. Показов 11354. Ответов 10
Метки (Все метки)

Ответ

Казанский, спс за отклик!

Сегодня наконец добил этот несчастный тест №8. Как оказалось, там адреса вида R100000C100000 или $VENIVIDIVICI$1 (правильные ответы соответственно $EQXD$100000 и R1C81531486219181787). Функция ConvertFormula в таких случаях работает неправильно.

Выкладываю финальное решение. Можно использовать вместо функции ConvertFormula в случаях, когда последняя работает неправильно.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
'Добавление заданной буквы в конец слова.
Function AddLetter(slovo() As Integer, letter As String) As Boolean
    Const LATIN_LETTERS_NUM = 26, BASE = 100
    Dim i As Integer, carry As Integer
    If Asc(letter) < 65 Or Asc(letter) > 90 Then Exit Function
    For i = LBound(slovo) To UBound(slovo)
        If slovo(i) = -1 Then
            If carry <> 0 Then slovo(i) = carry
            Exit For
        End If
        slovo(i) = slovo(i) * LATIN_LETTERS_NUM + carry
        carry = slovo(i) \ BASE
        slovo(i) = slovo(i) Mod BASE
    Next i
    carry = Asc(letter) - Asc("A") + 1
    For i = LBound(slovo) To UBound(slovo)
        If carry = 0 Then Exit For
        If slovo(i) = -1 Then
            slovo(i) = carry
            Exit For
        End If
        slovo(i) = slovo(i) + carry
        carry = slovo(i) \ BASE
        slovo(i) = slovo(i) Mod BASE
    Next i
    AddLetter = True
End Function
'Отнятие буквы от конца слова.
Function RemoveLetter(slovo() As Integer) As String
    Const LATIN_LETTERS_NUM = 26, BASE = 100
    Dim i As Integer, remainder As Integer
    Select Case slovo(LBound(slovo))
        Case -1
        Case 0, 1
            slovo(LBound(slovo)) = slovo(LBound(slovo)) - 1
        Case Else
            For i = LBound(slovo) To UBound(slovo)
                If slovo(i) = 0 Then
                    slovo(i) = BASE - 1
                Else
                    If slovo(i) = 1 Then slovo(i) = -1 Else slovo(i) = slovo(i) - 1
                    Exit For
                End If
            Next i
    End Select
    For i = UBound(slovo) To LBound(slovo) Step -1
        If slovo(i) <> -1 Then Exit For
    Next i
    If i >= LBound(slovo) Then
        remainder = slovo(i) Mod LATIN_LETTERS_NUM
        slovo(i) = slovo(i) \ LATIN_LETTERS_NUM
        If slovo(i) = 0 Then slovo(i) = -1
    End If
    For i = i - 1 To LBound(slovo) Step -1
        slovo(i) = slovo(i) + remainder * BASE
        remainder = slovo(i) Mod LATIN_LETTERS_NUM
        slovo(i) = slovo(i) \ LATIN_LETTERS_NUM
    Next i
    RemoveLetter = Chr(remainder + Asc("A"))
End Function
'Преобразование слова в строку десятичных цифр.
Function ToDecimal(slovo As String) As String
    Dim i As Integer, slovo2(0 To 99) As Integer, s As String, d As String
    For i = LBound(slovo2) To UBound(slovo2)
        slovo2(i) = -1
    Next i
    For i = 1 To Len(slovo)
        If AddLetter(slovo2, Mid(slovo, i, 1)) = False Then Exit Function
    Next i
    For i = UBound(slovo2) To LBound(slovo2) Step -1
        If slovo2(i) <> -1 Then Exit For
    Next i
    For i = i To LBound(slovo2) Step -1
        If slovo2(i) < 10 Then s = "0" & slovo2(i) Else s = slovo2(i)
        d = d & s
    Next i
    If Left(d, 1) = "0" Then d = Mid(d, 2)
    ToDecimal = d
End Function
'Преобразование строки десятичных цифр в слово.
Function ToSlovo(dec As String) As String
    Dim i As Integer, j As Integer, slovo(0 To 9) As Integer
    For i = LBound(slovo) To UBound(slovo)
        slovo(i) = Right(dec, 2)
        If Len(dec) <= 2 Then
            For j = i + 1 To UBound(slovo)
                slovo(j) = -1
            Next j
            Exit For
        End If
        dec = Left(dec, Len(dec) - 2)
    Next i
    While slovo(0) <> -1
        ToSlovo = RemoveLetter(slovo) & ToSlovo
    Wend
End Function
'Функция преобразования адреса ячейки из одного формата в другой.
Function ConvertAddress(addr As String) As String
    Dim i As Integer, a As String, b As String, d As String
    If addr Like "$*$*" Then
        i = InStr(2, addr, "$")
        a = Mid(addr, 2, i - 2)
        b = Mid(addr, i + 1)
        If IsNumeric(b) And Val(b) > 0 Then
            d = ToDecimal(a)
            If Len(d) Then
                ConvertAddress = "R" & b & "C" & d
                Exit Function
            End If
        End If
    ElseIf addr Like "R*C*" Then
        i = InStr(2, addr, "C")
        a = Mid(addr, 2, i - 2)
        b = Mid(addr, i + 1)
        If IsNumeric(a) And Val(a) > 0 Then
            If IsNumeric(b) And Val(b) > 0 Then
                ConvertAddress = "$" & ToSlovo(b) & "$" & a
                Exit Function
            End If
        End If
    End If
    ConvertAddress = "Неверный формат"
End Function
'The sub must me named with word "Task" and task ID.
Sub Task1043A()
    Dim vvod As Worksheet, vyvod As Worksheet
    Dim i As Integer, n As Integer
    Set vvod = Sheets("Input")
    Set vyvod = Sheets("Output")
    'Ввод кол-ва адресов для обработки.
    n = vvod.Range("A1").Value
    'Обработка адресов.
    For i = 1 To n
        vyvod.Cells(i, 1).Value = ConvertAddress(vvod.Cells(i, 2).Value)
    Next i
End Sub


Вернуться к обсуждению:
Перевод адреса ячейки из одного формата в другой VBA
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2018, 22:50
Готовые ответы и решения:

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте. Столкнулся с проблемой. Необходимо на листе Excel Залить, предположим, ячейку &quot;C4&quot;...

Копировать ячейки с красным шрифтом с одного листа на другой
Добрый День! Есть задача копировать с листа3 на лист1 ячейки(всего их 30) с красным шрифтом....

Как вытащить значение ячейки из одного документа в другой
Есть документ, который служит для расчета проектных данных и фактических. В этот документ нужно по...

Копирование значения ячейки с одного листа и вставка в другой
Здравствуйте! Делаю дз по информатике, VBA. Задание заключается вот в чем: есть два листа в...

10
25.10.2018, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2018, 22:50
Помогаю со студенческими работами здесь

Копирование данных из ячейки одного листа на другой с условием
Копирование данных из ячейки одного листа на другой с условием На листе 1 в ячейках B4: ......

Копирование данных из ячейки одного листа на другой перед тире
Скажите, необходимо скопировать из Листа1 ячееки F4: ... в лист 2 в ячейки I данные которые ...

Скопировать столбец ФИО из одного листа на другой лист с разбивкой на 3 ячейки
Необходимо копировать столбец ФИО из одного листа на другой лист с разбивкой на 3 ячейки Здесь...

Копирование значения ячейки из одного листа в другой при соблюдений условии
Добрый день! Помогите написать макрос для решения следующей проблемы. Имеется таблица Excel,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru