셀에서 나머지 정보를 제거하고 일부만 유지하는 방법은 무엇입니까?

셀에서 나머지 정보를 제거하고 일부만 유지하는 방법은 무엇입니까?

가능하다면 모든 것을 제거하고 주문 ID를 얻고 싶습니다. 문제는 주문 ID의 위치이며 때로는 A또는 로 시작된다는 것입니다 1.

  • 셀 예 A1:{"Ref":"bad order","OrderId":"ABSER27"}
  • 셀 예 A2:{"OrderId":"ABSER27"}
  • 셀 예 A3:{"order_id":"12345678","customer_email":"[email protected]"}

  • 원하는 결과: B1 = ABSER27
  • 원하는 결과: B3 = ABSER27
  • 원하는 결과: B3 = 12345678

답변1

Excel의 "텍스트를 열로" 기능을 사용하면 생활이 더 쉬워집니다.

1단계 - 문자열을 열로 자릅니다.

먼저 선행 {및 후행 을 제거합니다 }. 교체 기능을 사용하여 수행할 수 있으며, 함수를 사용하여 수행하려면 =MID(A1,2,LEN(A1)-2).

그러면 다음과 같은 소스 데이터가 생성됩니다. 여기에 이미지 설명을 입력하세요

그런 다음 A열( 제외 { })을 선택하고 리본에서 데이터 > 데이터 도구 > 텍스트를 열로 변환을 선택합니다. 다음 옵션을 사용하세요. 여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

그러면 정보가 4개 열에 깔끔하게 표시됩니다. 여기에 이미지 설명을 입력하세요

2단계 - 열에서 주문 ID 선택

그 후에는 주문 ID를 받기 위해 원하는 모든 작업을 수행할 수 있습니다. 간단한 방법은 아래 수식을 갖는 셀 G1이 있는 G열에 수식을 입력하는 것입니다.

=INDIRECT("RC"&MATCH("order*id",A1:F1,0)+1,FALSE)

예제에서 "OrderId"는 "order_id" 형식일 수도 있으므로 와일드카드를 사용하여 *일치를 수행합니다. 그러면 수식은 "OrderId" 오른쪽에 있는 셀을 가져옵니다. 여기에 이미지 설명을 입력하세요

답변2

이런 유형의 문제에 대해 나는 사용합니다정규식 찾기/바꾸기 추가 기능
(나는 그것과 어떤 식 으로든 관련이 없으며 단지 열성적인 사용자입니다.)

이를 통해 정규식을 사용할 수 있습니다. 예:
=RegExReplace(UPPER(A1),".*ORDER_?ID"":""([^""]+)"".*","$1")

여기에 이미지 설명을 입력하세요

답변3

B2 셀에서 Mid 함수를 사용하십시오.

텍스트 =A2

시작 번호 = 검색 기능(검색은 대소문자를 구분하지 않지만 찾기는 구분함)을 사용하여 위치 1부터 시작하는 셀 A2의 "id" 위치를 찾은 다음 주문 번호에 문자 수를 추가합니다.

문자 수는 시작 번호와 다음 큰따옴표(ASCII 문자 34) 위치의 차이입니다.

=MID(A2,SEARCH("id",A2,1)+5,(FIND(CHAR(34),A2,(SEARCH("id",A2,1)+5))-(SEARCH("id",A2,1)+5)))

추가 기능이나 VBA 없이 이메일 필드 또는 주문 ID에 추가 "ID/id"를 허용하도록 편집하세요.

둘 이상의 ID가 있고 이메일 주소가 쉼표로 구분된 첫 번째 필드가 아닌지 확인하는 IF 내에 true 및 false MID 문을 래핑합니다.

 =IF(
AND((LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),("ID"),"")))/LEN("ID")>1,ISERROR(FIND("@",LEFT(A2,FIND(",",A2)-1),1))=FALSE),

MID(A2,
FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5,
FIND(CHAR(34),A2,FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)-(FIND("~",SUBSTITUTE(UPPER(A2),"ID","~",2),1)+5)
),

MID(A2,
SEARCH("ID",A2,1)+5,
(FIND(CHAR(34),A2,(SEARCH("ID",A2,1)+5))-(SEARCH("ID",A2,1)+5))
)
)

답변4

귀하가 제시한 정보에 따르면 주문 ID는 첫 번째 A또는 1필드에서 첫 번째 다음 "(인용)까지 실행됩니다. 이는 어렵지 않습니다. 몇 가지 "도우미 열"을 사용하는 것이 가장 쉽습니다.

  • C1=IFERROR(FIND("A",$A1), LEN($A1)+1)
  • D1=IFERROR(FIND("1",$A1), LEN($A1)+1)
  • E1=MIN($C1,$D1)
  • F1=FIND("""", $A1, $E1)

C1셀에서  D1첫 번째 A및 를 각각 찾습니다 . 아무것도 없으면 오류를 반환하고 를 사용하여 값을 더하기 1 의 길이로 설정합니다 . 즉, 마지막 문자 뒤의 다음 문자의 오프셋입니다.  이 중 더 작습니다. 따라서 하나 이상의 or 가 발견 되면 첫 번째 항목을 가리킵니다. 아무것도 없으면 길이+1이기도 합니다.1A1FINDIFERRORA1E1A1E1

이제 위의 내용 이후 F1첫 번째 항목을 찾습니다 . "이 없으면 "오류입니다. A또는 a가 없으면 길이는 +1이므로 1오류 도 발생합니다.E1A1F1

그래서 마침내 우리는 설정했습니다

  • B1=IF(ISERROR($F1), "ERROR", MID($A1, $E1, $F1-$E1))

F1오류인 경우 ERROR표시기를 표시하면 됩니다. 그렇지 않으면 or A1의 위치에서 시작하여 구분자 까지(포함하지 않음) 길이의 의 MIDdle에서 하위 문자열을 추출합니다 .A1"

관련 정보