Я хочу разделить ячейку с данными на другие ячейки на основе данных в исходной ячейке. Данные из исходной ячейки выглядят так (все содержимое в одной ячейке):

Field95-4,Field97-4,Field98-0,Field100-2,Field103-0,Field105-3,Field107-4,Field109-4,Field110-2,Field111-0,Field112-0,Field113-192,Field114-87,Field115-0,Field116-0,Field117-60

Он должен быть разделен с использованием "," в качестве разделителя. Я узнал, что могу сделать это с помощью скрипта:

Private Sub CommandButton1_Click()
Dim X As Variant
X = Split(Range("A1").Value, ",")
Range("A1").Resize(UBound(X) - LBound(X) + 1).Value = Application.Transpose(X)
End Sub

Тогда результат будет таким:

Field95-4
Field97-4
Field98-0
Field100-2
Field103-0
Field105-3
Field107-4
Field109-4
Field110-2
Field111-0
Field112-0
Field113-192
Field114-87
Field115-0
Field116-0
Field117-60

Каждое значение представляет собой один токен, который содержит две части, разделенные дефисом; исходное содержимое ячейки и его восстановительная стоимость. Скрипт должен искать ячейку, содержащую первую часть токена, часть 'fieldnumber'.

Например, есть ячейка с текстом «Field95», ячейка с текстом «Field97» и т.д. Затем я хочу заменить первую часть токена второй частью. Таким образом, для «Field95-4» должна быть найдена ячейка с содержимым «Field95» и заменена текстом «4». Ячейка с содержимым «Field97» должна быть заменена на «4». и т.п.

Это файл Excel, который я загрузил, так что вы можете видеть, о чем мой вопрос. Содержит данные. ссылка на сайт

Я знаю, что стоит спросить, но мы очень старались, и я не могу заставить его работать.

Я с нетерпением жду ваших ответов. Заранее спасибо!

1 ответ1

0

Предполагая, что ваши значения находятся в одном диапазоне, а ваш диапазон поиска и замены не включает этот диапазон, может сработать что- то подобное (отрегулируйте диапазоны, попробуйте скопировать ваши данные)-

Sub test()
Dim X As Variant
X = Split(Range("A2").Value, ",")
Range("A2").Resize(UBound(X) - LBound(X) + 1).Value = Application.Transpose(X)
End Sub

Sub test2()
Application.ScreenUpdating = False
Dim strReplace As String
Dim strSearch As String
Dim i As Integer
Dim j As Integer

'Loop through cells
For Each c In Range("A2:A17")
    'Select non-blanks
    If c.Value <> "" Then
        On Error Resume Next
        'Get length of cell
        j = Len(c)
        'Find first delimiter and store position
        i = Application.WorksheetFunction.Search("-", c.Value)
        'Get strings!
        strSearch = Left(c, i - 1)
        strReplace = Right(c, j - i)
        'Find and Replace
        Range("c2:c121").Cells.Replace What:=strSearch, Replacement:=strReplace, LookAt:=xlWhole, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    End If
 Next c

Application.ScreenUpdating = True
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .