в Excel,
У меня есть куча информации на листе 1 / столбец A, и я хотел бы найти конкретный текст (начиная со слова N1 * PE * до 9 цифр перед "~ N"),
А затем сравните (Лист1 / Столбец А) из списка правильный (Лист2 / Столбец А) и затем вставьте его на отдельный лист (Лист3 / Столбец А).
Вот пример:
В листе 1, столбец A: (У меня НЕПРАВИЛЬНАЯ информация ниже)
EDI DEPARTMENT * TE * 2658018518 ~ N1 * PE * ELMHUR
ST CENTER * XX * 564824568 ~ N4 * БОЛЬШАЯ ШЕЯ * NY * 11023
N1 * PE COOPER XX * 333333333 ~ N4 * НЬЮ-ЙОРК * NY * 10077-5281 ~ REF * TJ * 133988001 ~ LX * 7111 ~
Как вы заметили, слово ELMHURST не используется.
Я хотел бы заменить неправильный текст (на листе 1 / столбец A) на основе списка образцов (на листе 2 / столбец A) и вставить его на листе 3 / столбец A -> , используя тот же формат .
Вот список образцов информации (ПРАВИЛЬНО) (Лист 2 / столбец A):
N1 * PE ELMHURST CENTER XX * 454545457
N1 * PE COOPER XX * 123457777
Итак, в результате должно быть:
In Sheet3 / Column A ...
ОТДЕЛ EDI * TE * 2658018518 ~ N1 * PE * ELMHUR
ST CENTER * XX * 454545457 ~ N4 * БОЛЬШАЯ ШЕЯ * NY * 11023
N1 * PE COOPER XX * 123457777 ~ N4 * НЬЮ-ЙОРК * NY * 10077-5281 ~ REF * TJ * 133988001 ~ LX * 7111 ~
Код ниже неполный. Как это можно только скопировать и вставить на листе 2 столбца А.
Option Explicit
Public Sub Transfer()
Dim lngRow As Long, lngWriteRow As Long, strTemp As String
Dim shtRaw As Worksheet, shtNew As Worksheet
' Initialize
lngWriteRow = 1 'The row we're writing to
Set shtRaw = Sheets("Sheet1") 'The raw data worksheet
Set shtNew = Sheets("Sheet2") 'The sheet with the concatenated text
For lngRow = 1 To shtRaw.UsedRange.Rows.Count
If InStr(1, shtRaw.Cells(lngRow, 1), "N1*PE*", vbTextCompare) > 0 Then
' Grab the end of this cell's text starting at N1*PE*
strTemp = Mid(shtRaw.Cells(lngRow, 1), InStr(1, shtRaw.Cells
(lngRow, 1), "N1*PE*", vbTextCompare))
' Add the start of the next cell's text, up to the ~N
strTemp = strTemp & Left(shtRaw.Cells(lngRow + 1, 1), InStr(1, shtRaw.Cells(lngRow + 1, 1), "~N", vbTextCompare))
' Write the concatenated string to the other worksheet
shtNew.Cells(lngWriteRow, 1) = strTemp
' NEED TO DO SOMETHING HERE... COMPARE THE TEXT FROM THE LIST AND PASTE IT ON SHEET 3 COLUMN A
' Move down one row for the next time we write to the other sheet
lngWriteRow = lngWriteRow + 1
End If
Next lngRow
'Sort the NPIs
Sheets("Sheet2").Select
Range("A:A").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
' Clean up memory
Set shtRaw = Nothing
Set shtNew = Nothing
End Sub
Заранее большое спасибо ...