Страницы: 1
RSS
Удаление текста до и после определенных слов, Удаление текста
 
Нужно вытащить текст между /wa-data/ и .webp (включительно). В одной ячейке несколько таких текстов. В прикрепленном файле ячейка D4.
Изменено: Аркадий Асанов - 16.11.2021 13:27:46
 
Аркадий Асанов, полученный результат можно объединить в одной ячейке:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  transform = Table.TransformColumns (
    src,
    {
      "Картинка 1 1",
      ( t ) =>
        List.Transform (
          List.Generate (
            () => [ text = t, result = Text.BetweenDelimiters ( text, "/wa-data/", ".webp" ), k = if result = "" then 0 else 1 ],
            each [k] > 0,
            each [ text = [text], result = Text.BetweenDelimiters ( text, "/wa-data/", ".webp", [k] ), k = if result = "" then 0 else [k] + 1 ],
            each [result]
          ),
          ( x ) => "/wa-data/" & x & ".webp"
        )
    }
  ),
  transform2 = Table.TransformColumns ( transform, { "Картинка 1 1", ( x ) => Text.Combine ( x, ";#(lf)" ) } )
in
  transform2

либо поместить в разные:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  transform = Table.TransformColumns (
    src,
    {
      "Картинка 1 1",
      ( t ) =>
        List.Transform (
          List.Generate (
            () => [ text = t, result = Text.BetweenDelimiters ( text, "/wa-data/", ".webp" ), k = if result = "" then 0 else 1 ],
            each [k] > 0,
            each [ text = [text], result = Text.BetweenDelimiters ( text, "/wa-data/", ".webp", [k] ), k = if result = "" then 0 else [k] + 1 ],
            each [result]
          ),
          ( x ) => "/wa-data/" & x & ".webp"
        )
    }
  ),
  expand = Table.ExpandListColumn ( transform, "Картинка 1 1" )
in
  expand
 
Цитата
вытащить текст между /wa-data/ и .webp (включительно)
Код
Sub GetFragmentText()
Dim mo As Object
Dim n As Integer
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
With CreateObject("VBScript.RegExp")
  .Global = True
  .Pattern = "/wa-data/.+?webp"
  For i = 2 To iLastRow
    If .Test(Cells(i, 4)) Then
      Set mo = .Execute(Cells(i, 4))
      For n = 0 To mo.Count - 1
        Cells(i, n + 5) = CStr(mo(n))
      Next
    End If
  Next
End With
End Sub
Страницы: 1
Наверх