Vba excel как удалить символ в ячейке

0 / 0 / 0

Регистрация: 28.07.2014

Сообщений: 3

1

Удаление символов в ячейке ексель

28.07.2014, 02:57. Показов 20684. Ответов 4


Студворк — интернет-сервис помощи студентам

Приветствую.
Опыта нет.
Требуется обработать файл ексель — 2003 с помощью макроса.

1. Замена комбинаций символов — в примере » » (двойной пробел) на » » (одиночный пробел)
2. Замена комбинаций символов — в примере «, ,» (запятая пробел запятая) на «,» (запятая)
3. Удаление в начале текста ячейки пробела
4. Удаление символа «,» (запятая) в конце текста ячейки — именно запятую а не последний символ.

Обработка всего листа по всем столбцам с данными.
Если возможно прошу прописать комментарии по формулам для последующего самостоятельного изменения текста или условий.

Заранее благодарен.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

28.07.2014, 02:57

4

ViterAlex

8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

28.07.2014, 04:56

2

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub test()
    'Поиск и замена
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=", ,", Replacement:=",", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Dim cell As Range 'переменная для перебора ячеек
        Dim r As Range 'переменная для диапазона используемых ячеек
        Set r = ActiveSheet.UsedRange 'Все используемые ячейки
    For Each cell In r.Cells
        'Если один символ справа равен ","
        If Right(cell.Value, 1) = "," Then
            'замена значения ячейки на то же значение, но без последнего символа
            cell.Value = Left(cell.Value, Len(cell.Value) - 1)
        End If
    Next
End Sub



1



olegerius

0 / 0 / 0

Регистрация: 28.07.2014

Сообщений: 3

28.07.2014, 05:11

 [ТС]

3

Спасибо за ответ.
И по аналогии добавил удаление первого пробела в строке…

Добавлено через 6 минут

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub test()
'Поиск и замена
Cells.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:=", ,", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Dim cell As Range 'переменная для перебора ячеек
Dim r As Range 'переменная для диапазона используемых ячеек
Set r = ActiveSheet.UsedRange 'Все используемые ячейки
For Each cell In r.Cells
'Если один символ справа равен ","
If Right(cell.Value, 1) = "," Then
'замена значения ячейки на то же значение, но без последнего символа
cell.Value = Left(cell.Value, Len(cell.Value) - 1)
End If
If Left(cell.Value, 1) = " " Then
'замена значения ячейки на то же значение, но без первого символа
cell.Value = Right(cell.Value, Len(cell.Value) - 1)
End If
Next
End Sub



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

28.07.2014, 06:32

4

Пробелы в начале и конце строки можно (и нужно) убирать функцией Trim



0



0 / 0 / 0

Регистрация: 28.07.2014

Сообщений: 3

28.07.2014, 11:18

 [ТС]

5

Прошу прощения за лохизм — пример нужен с условием.



0



I am trying to delete the first occurrence of «<» and «>» in a cell without losing formatting of the remainder of the cell’s contents.

I have looked in several places here, and other, to no avail.

This is what I am trying to do:

Say «A1» contains the text:

"This is <a> long string with several <occurrences> of a <special> character."

In any case, What I am trying to do is remove the «>», and in a perfect world the «<«, from the first word which contains them while maintaining the bold formatting as well as the «<» and «>» on the next word containing them.

This is ONLY other code executing prior to the code I am having issues with.

inTx = Range("A2").Value
outTx = Replace(inTx, "Init_Day", Range("A3").Value)
Range("A2").Value = outTx

Which replaces the <placeholder> text with the actual text, a two digit number in this case.

Here is the code that is not working for me:

SearchString = Range("A2").Value
Char1 = "<"
Char2 = ">"
For i = 1 To Len(SearchString)
    If Mid(SearchString, i, 1) = Char1 Then
        startPos = i
        Exit For
    End If
Next i
For i = 1 To Len(SearchString)
    If Mid(SearchString, i, 1) = Char2 Then
        endPos = i
        Exit For
    End If
Next i
Range("A2").Characters(startPos, endPos - startPos).Font.Bold = True
Range("A2").Characters(startPos - 1, 1).Delete

All code works fine until I reach the last line:

Range("A2").Characters(startPos - 1, 1).Delete

then nothing happens.

I’ve even tried:

Range("A2").Characters(startPos - 1, 20).Delete

Still nothing…

I know this should be easy but I can’t seem to figure it out.

Thanks in advance.

Доброе время суток уважаемые форумчани!!
Хочу попросить помощи в решение следующей задачи.
В ячейке содержится текст где каждый символ имеет свои свойства (формат), в том числе и надстрочные символы.
Необходимо удалить надстрочные символы в тексте так, чтобы формат остальных символов остался неизменным.
Единственное что придумал, это:
1. Создание двумерного массива:  Массив(параметры To колич. символов)
2. Перебор текста по одному символу и сохранение параметров каждого символа в массив (с помощью: ячейка.Characters(i, 1).Font)
3. Поиск надстрочных символов, их удаление, присвоение остальным символам соответствующий формат

Вроде все предельно ясно, но лист который я буду обрабатывать содержит тысячи ячеек и текст там далеко не в 3 символа.
Есть другой более простой способ решения этой задачи?

Пример текста и желаемого результата прикладываю.
Спасибо всем заранее!

in this example below I want to remove the «B» using VBA. Thus, I download these values which spam from B5:F50 and all in the end have «B». My question is twofold. A) Is there a way to delete the «B» using VBA and replace these values in the same cells? B) Or have to be in new cells?

77.65B 86.73B 92.97B 84.7B 89.4B

Community's user avatar

asked Aug 16, 2017 at 13:56

Vasileios Georgakopoulos's user avatar

2

The code would be like this

Sub test()
    Dim rngDB As Range, vDB
    Dim s As String, i As Integer, j As Integer

    Set rngDB = Range("b5:f50")
    vDB = rngDB
    r = UBound(vDB, 1)
    c = UBound(vDB, 2)
    For i = 1 To r
        For j = 1 To c
            s = vDB(i, j)
            s = Left(s, Len(s) - 1)
            vDB(i, j) = s
        Next j
    Next i
    rngDB = vDB

End Sub

Or

Sub test2()
    Dim rngDB As Range        
    Set rngDB = Range("b5:f50")
    rngDB.Replace "B", "", lookat:=xlPart

End Sub

answered Aug 16, 2017 at 14:11

Dy.Lee's user avatar

0

The easiest (shortest) way I can see to do this is with a Search/Replace, but this would be on the assumption that all cells end in B and a B doesn’t legitimately occur elsewhere in the cells.

Sheets("YourSheetNameHere").Range("B5:F50").Replace What:="B", Replacement:="", LookAt:=xlPart

Alternatively, you could loop through each cell and RIGHT/LEN etc. but why bother?

answered Aug 16, 2017 at 14:13

CLR's user avatar

CLRCLR

10.7k1 gold badge10 silver badges26 bronze badges

0

Группа: Пользователи

Ранг: Участник

Сообщений: 73


Репутация:

1

±

Замечаний:
0% ±


Excel 2019

[vba]

Код

Dim c as Range
Dim str as String
for each c in selection
str = c.value
If left(str,1) = 7 then
c.value = right(str, len(str)-1)
end if
next

[/vba]
Но если вы вместо цифры захотите убрать, допустим букву а, тогда надо написать = «a», т.е. взят ь в кавычки

Сообщение отредактировал TD_MElecПятница, 19.11.2021, 21:04

Like this post? Please share to your friends:
  • Vba excel как удалить проект
  • Vba excel как удалить пробелы в строке
  • Vba excel как удалить лишние пробелы
  • Vba excel как удалить лист без подтверждения
  • Vba excel как удалить колонку