Нужно разобрать ячейку в excel для определенного текста и скопировать текст рядом с ним - PullRequest
0 голосов
/ 26 октября 2018

У меня большой набор данных Excel, и мне нужно проанализировать все ячейки в столбце M, найти строку «Алгоритм подписи» и, если найден, скопировать текст рядом с ним в отдельную ячейку отдельного столбца. .

Например, ячейки в столбце M содержат много текста.

Sample text-
Common name: blast
Version:3
Signature algorithm: RSA with SHA-1

Мне нужно просмотреть все данные, и если в данных есть алгоритм подписи, мне нужно скопировать значение RSA с SHA-1 в отдельную ячейку.

Пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Если это были наши данные

image 1

Затем я использовал эту формулу в b2, затем перетянул ее на b3: Я использовал: = IFERROR (IF (ISNUMBER (FIND ("Алгоритм подписи", A1)), RIGHT (A1, LEN (A1) -SARCH ("RSA", A1) +1), ""), "")

Image 2

Таким образом, чтобы разбить его, iferror, ", проверяет на наличие ошибок, предоставляет" ", если обнаружена ошибка. Isnumber проверяет, есть ли число. Поиск ищет«Алгоритм подписи» в A1. Справа возвращает все. Справа от возвращенного числа. Len - длина символа AI. Поиск находит RSA.

Итак, в общем, мы ищем алгоритм подписи, если он найден, он возвращаетчисло. Если это число, то они ищут RSA. Если RSA найден, он возвращает все после и включая RSA.

0 голосов
/ 27 октября 2018

попробуйте следующее:

Public Function getSigAlg(txt As String) As String

findIfAlgorithm = InStr(1, txt, "Signature algorithm")

If findIfAlgorithm > 0 Then
    getSigAlg = Left(Right(txt, (Len(txt) - (findIfAlgorithm + Len("Signature algorithm") + 1))), 14)
Else
    getSigAlg = "no Signature"
End If

End Function

, затем в ячейке B1

= getSigAlg (A1)

enter image description here

0 голосов
/ 26 октября 2018

С помощью VBA UDF вы можете Split() свою строку на Signature algorithm: (с учетом регистра) и извлечь второй элемент из полученного массива.Затем, чтобы быть в безопасности, разделите это на vbcrlf (конец строки) и верните первый элемент:

Public Function getSignatureAlgorithm(inString As String) As String
    On Error Resume Next
    getSignatureAlgorithm = Split(Split(inString, "Signature algorithm: ")(1), vbCrLf)(0)
End Function

Просто откройте ваш VBE, добавьте новый модуль и вставьте его. Затем вы можетеиспользуйте это в своем рабочем листе.Например, если это значение было в Sheet1 ячейке A1, в B2 вы могли бы написать:

=getSignatureAlgorithm(A1) 

И оно выплюнет:

RSA with SHA-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...