Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Excel - изменение ячейки


Автор: FireAlex 27.1.2005, 15:19
следующая проблема .
есть лист Excel. в одном столбце несколько тысыч записей формата ФИО, Адрес.
нужно в этом столбце удалить Адрес, оставив фамилию. грубо говоря искать в ячейке запятую и удалить всё содержимое после неё. писать прогу на дельфях нет времени может кто подскажет как быстрее с помощью VBA

Автор: Akina 27.1.2005, 15:35
Код

A2=Iif( Instr(A1,",")>0; Left(A1,Instr(A1,",")-1); A1)

Автор: Naghual 27.1.2005, 15:38
Вот примерно так
Код
Public Sub RemoveAddress(SH As Worksheet, Column As Integer)
   Dim r As Integer
   Dim StrValue As String
   Dim ComaPos As Integer
   
   For r = 1 To SH.UsedRange.Rows.Count
       StrValue = CStr(SH.UsedRange.Cells(r, Column).Value)
       ComaPos = InStr(1, StrValue, ",")
       If ComaPos > 0 Then
           SH.UsedRange.Cells(r, Column).Value = Mid$(StrValue, 1, ComaPos - 1)
       End If
   Next r
End Sub


ЗЫ: Ну и шустрый же ты, Akina. smile

Автор: Staruha 27.1.2005, 22:38
Код

Private Sub CommandButton1_Click()
Dim d As Integer

Dim str As String
Dim str1 As String
Dim strLen
Dim i As Integer

d = UsedRange.Rows.Count

For rwIndex = 1 To d
str = Range("A" & rwIndex)
strLen = Len(str)
   For i = 1 To strLen
   str1 = Mid(str, i, 1)
     If Asc(str1) <> 44 Then
      Range("B" & rwIndex).Value = Left(str, i)
     Else
   Exit For
End If
Next i
Next rwIndex

End Sub

Автор: FireAlex 28.1.2005, 07:54
сделал макрос в екселе, вставил туда код но рукается на строчку Sh = Worksheets(1)
"Object variable or With block variable not set"
код следующий:

Sub Макрос1[s]()
Dim Sh As Worksheet
Dim r As Integer
Dim StrValue As String
Dim ComaPos, Column As Integer

Column = 4 ' номер столбца

Sh = Worksheets(1)

For r = 1 To Sh.UsedRange.Rows.Count
StrValue = CStr(Sh.UsedRange.Cells(r, Column).Value)
ComaPos = InStr(1, StrValue, ",")
If ComaPos > 0 Then
Sh.UsedRange.Cells(r, Column).Value = Mid$(StrValue, 1, ComaPos - 1)
End If
Next r
End Sub


в VB не силен, но по моему всё правильно. видать что то упустил


Автор: ~FoX~ 28.1.2005, 09:28
Код

Set Sh = Worksheets(1)

Автор: Staruha 28.1.2005, 09:36
Не надо делать макрос,если действительно на VBA.Рисуй на листе кнопку и вставляй туда мой код.Все работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)