Страница: 1 |
|
Вопрос: Сортировка данных в MS Excel
|
Добавлено: 13.07.10 00:14
|
|
Автор вопроса: Mourat Boutry | ICQ: 490484
|
Знающие люди, подскажите пожалуйста. А еще лучше приведите пример. Так как я совсем не знаю VBA.
У меня есть xls файл с двумя книгами. В одной пустая таблица, а в другой список (где-то 700 отелей). Нужно выудить нужную инфу из каждой строки и положить ее в соответствующую ячейку в таблице. Если кто-то может помочь с этим то вот файл http://pinkink.ru/data.xls .
Структура такая:
есть строка типа ROYAL IMPERIAL SAN REMO ***** - 126 Corso Imperatrice 80, 18038 Sanremo
1, ROYAL IMPERIAL SAN REMO - это название отеля
2, ***** - это количество звезд
3, 126 - это количество комнат
4, Corso Imperatrice 80 - это адрес
5, 18038 - это почтовый индекс
6, Sanremo - это название города
Нужно разбить эту строку на составляющие и поместить в таблицу.
Заранее спасибо.
Ответить
|
Номер ответа: 1 Автор ответа: Eugy
Вопросов: 0 Ответов: 73
|
Профиль | | #1
|
Добавлено: 13.07.10 05:11
|
Да легко...,
отправьте 10000 лир на короткий номер 911
- Option Explicit
-
- Private Type HOTL
- naim As String
- adrs As String
- city As String
- indx As Long
- strs As Integer
- roms As Integer
- End Type
-
- Sub macros1()
-
- Dim w As Worksheet
- Dim r As Range
- Dim ht As HOTL
- Dim i As Integer
-
- For Each w In Worksheets
- w.Name = Trim(w.Name)
- Next
-
- Set w = ThisWorkbook.Worksheets.Item("DB I = X")
- w.Columns(5).NumberFormat = "00000"
- i = 2
-
- For Each r In ThisWorkbook.Worksheets.Item("BOOKING").Rows
- If Not setHOTL(ht, r.Cells(, 1), r.Cells(, 2)) Then Exit For
- w.Range("A" & i & ":F" & i) = Array(ht.naim, String(ht.strs, "*"), ht.roms, ht.adrs, ht.indx, ht.city)
- i = i + 1
- Next
- End Sub
-
-
- Private Function setHOTL(sp As HOTL, s1 As String, s2 As String) As Boolean
- Dim ss As Variant
- Dim i As Integer
- If s1 = vbNullString Then setHOTL = False: Exit Function
- ss = Split(s1, "-")
- If (UBound(ss)) Then sp.roms = Trim(ss(1))
- s1 = ss(0)
- sp.naim = Trim(Split(ss(0), "*")(0))
- For i = 5 To 1 Step -1
- If InStr(Len(sp.naim), s1, String(i, "*")) Then
- sp.strs = i
- Exit For
- End If
- Next
- ss = Split(s2, ",")
- Dim sx As String
- i = UBound(ss)
- If i Then
- sx = Trim(ss(i))
- sp.indx = Val(sx)
- If sp.indx = 0 Then
- sp.city = sx
- Else
- sp.city = Trim(Right(sx, Len(sx) - Len(sp.indx) - 1))
- End If
- End If
- sp.adrs = ss(0) & IIf(i > 1, "," & ss(1), "")
- setHOTL = True
- End Function
Ответить
|
Страница: 1 |
Поиск по форуму