Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ЛЕВСИМ и ПРАВСИМ с помощью VBA / 5 сообщений из 5, страница 1 из 1
01.03.2011, 20:26
    #37142827
nikalex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЛЕВСИМ и ПРАВСИМ с помощью VBA
Всем привет!!!

Как можно реализовать с помощью VBA функции Excel ЛЕВСИМ и ПРАВСИМ ???
т.е. например в ячейке A1 есть данные "3000x500", как сделать чтобы в ячейке B1 отразилось "3000", а в ячейке C1 "500" Символ "x" выбрасывается. Хочу заметить, что "3000x500" - это в качестве примера, могут быть варианты и "300x500" и "30x500" и "3000x50" т.е. по количеству знаков до символа и после не пойдет, необходимо взять данные строго до символа "x" и после него.

Заранее благодарю!!!
...
Рейтинг: 0 / 0
01.03.2011, 20:47
    #37142855
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЛЕВСИМ и ПРАВСИМ с помощью VBA
nikalex2, ДЛЯ ЗАТРАВКИ
Пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
' В данном примере функция InStr
' возвращает позицию первого появления
' одной строки внутри другой строки
Dim SearchString, SearchChar, MyPos
SearchString ="Русский_Проект"   ' Исходная строка
SearchChar = "Р"   ' Следует найти "P"

' Посимвольное сравнение, начиная с позиции 4. Возвращает 10
MyPos = Instr( 4 , SearchString, SearchChar, vbTextCompare)   

' Двоичное сравнение, начиная с позиции 1. Возвращает 1
MyPos = Instr( 1 , SearchString, SearchChar,  0 )

' Сравнение является двоичным по умолчанию (последний аргумент опущен)
MyPos = Instr(SearchString, SearchChar)   ' Возвращает 1

MyPos = Instr( 1 , SearchString, "W")   ' Возвращает  0 
...
Рейтинг: 0 / 0
02.03.2011, 01:14
    #37143119
ЛЕВСИМ и ПРАВСИМ с помощью VBA
nikalex2,
и зачем Вам этот велосипед...
Код: plaintext
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.
Public Function LeftRight$(a As Range, _
        Optional lr As Byte, Optional sep$ = " ")
' a - ссылка на ячейку, значение которой надо разделить;
' lr  - 0: получить "левую" часть (по умолчанию), 1: получить "правую часть"
' sep - разделитель левой и правой части, по умолчанию - пробел
'      если во входном значении несколько разделителей, раздел пройдет
'      по первому из них

  If a Is Nothing Or a.Value2 = "" Then Exit Function

' *** вариант 1
  Dim k%

  k = InStr( 1 , a.Value2, sep)

  If k =  0  Then
    LeftRight = a.Value2
  ElseIf lr =  0  Then
    LeftRight = Left$(a.Value2, k -  1 )
  Else
    LeftRight = Mid$(a.Value2, k + Len(sep))
  End If


' *** вариант 2
'  Dim arr
'
'  arr = Split(a.Value2, sep)
'  If lr > 1 Then lr = 1
'  On Error Resume Next
'  LeftRight = arr(lr)
'  On erro GoTo 0
'  Erase arr

End Function

' формула для ячейки B1: =LeftRight(A1;0;"x")
' формула для ячейки C1: =LeftRight(A1;1;"x")
...
Рейтинг: 0 / 0
02.03.2011, 10:39
    #37143474
nikalex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЛЕВСИМ и ПРАВСИМ с помощью VBA
пробуй камнемnikalex2,
+
и зачем Вам этот велосипед...
Код: plaintext
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.
Public Function LeftRight$(a As Range, _
        Optional lr As Byte, Optional sep$ = " ")
' a - ссылка на ячейку, значение которой надо разделить;
' lr  - 0: получить "левую" часть (по умолчанию), 1: получить "правую часть"
' sep - разделитель левой и правой части, по умолчанию - пробел
'      если во входном значении несколько разделителей, раздел пройдет
'      по первому из них

  If a Is Nothing Or a.Value2 = "" Then Exit Function

' *** вариант 1
  Dim k%

  k = InStr( 1 , a.Value2, sep)

  If k =  0  Then
    LeftRight = a.Value2
  ElseIf lr =  0  Then
    LeftRight = Left$(a.Value2, k -  1 )
  Else
    LeftRight = Mid$(a.Value2, k + Len(sep))
  End If


' *** вариант 2
'  Dim arr
'
'  arr = Split(a.Value2, sep)
'  If lr > 1 Then lr = 1
'  On Error Resume Next
'  LeftRight = arr(lr)
'  On erro GoTo 0
'  Erase arr

End Function

' формула для ячейки B1: =LeftRight(A1;0;"x")
' формула для ячейки C1: =LeftRight(A1;1;"x")


Чёт не разделяется, вроде делаю все как в примечаниях
...
Рейтинг: 0 / 0
02.03.2011, 12:02
    #37143710
nikalex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЛЕВСИМ и ПРАВСИМ с помощью VBA
Сори пробуй камнем !!!
Туплю с утра по-раньше. Всё РАБОТАЕТ!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ЛЕВСИМ и ПРАВСИМ с помощью VBA / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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