2014-09-16 3 views
1

원하는 방식으로 텍스트 셀을 결합하는 수식을 작성하는 데 어려움이 있습니다. 연결하려는 필드는 Title, Forename, RegnalNumber, Surname 및 Alias ​​순으로 5 개입니다. 내가 어떤 정규식 전문가는 아니지만, 그래서 가난한 서식을 용서하지만,이 표현하는 거친 방법입니다 내가 달성하기 위해 노력하고있어 :수식으로 텍스트 셀의 특정 연결

(title)? (forename) (regnalnumber)? (surname)?, (alias). 

뒤따라야 필드가 null 일 수 없습니다 유일한 필드, "?"값을 가질 수도 있지만, 연결에서 아무 것도 출력하지 않아야합니다. 즉, 공백으로 처리되어야합니다. 잘하면 다음 테스트 케이스 내가 달성하기 위해 노력하고있어 출력을 보여해야한다 :이 연결 작업을 만들려고 노력 연령대에 실험 한

| Title | Forename | RN | Surname | Alias  | CONCATENATE       | 
+--------+----------+----+-----------+--------------+---------------------------------------+ 
| Ser | Jaime | | Lannister | Kingslayer | Ser Jaime Lannister, Kingslayer  | 
|  | Pate  | |   |    | Pate         | 
| Lord | ?  | | Vance  |    | Lord Vance       | 
| King | Aerys | II | Targaryen | The Mad King | King Aerys II Targaryen, The Mad King | 
| Lord | Jon  | | Arryn  |    | Lord Jon Arryn      | 
|  | Garth | |   | Of Oldtown | Garth, Of Oldtown      | 

하지만 안식처 : 오른쪽의 출력은 어떻게 보일지입니다 그것을 올바르게 할 수 없었습니다. 셀 참조가 이해도에 대한 필드의 이름으로 대체하여이 현재 공식이다 :

=CONCATENATE(IF(Title<>"",Title&" ",""),IF(AND(Forename<>"",Forename<>"?"),Forename,""),IF(RN<>""," "&RN,""), IF(OR(AND(Forename<>"", Forename<>"?"), Surname<>"", RN<>""), " ",""), IF(Surname<>"",Surname,""),IF(AND(Alias<>"",OR(Alias<>"",AND(Forename<>"", Forename<>"?"),Surname<>"")),", "&Alias, Alias)) 

가 작동하지 않는 한 경우가 있습니다 : 성 및 RN가 null하지만 경우하여 뒤따라야 및 별칭이 아닌 있습니다 -없는. 예를 들어 Forename이 Garth이고 별칭이 Of Oldtown 인 경우 연결 결과는 Garth , Of Oldtown입니다. 제목이 null이 아닌 경우에도 마찬가지입니다. 쉼표 앞에 공백이 없어야합니다.

이 수식을 수정하여 예상대로 작동하도록 도와 줄 수 있습니까? 당신이 그것을 단순화하는 방법을 찾을 수 있다면, 심지어 더 좋아! 나는 이것이 아마도 많은 부분을 지나치게 복잡하게 만들고 있음을 안다. Excel이 아닌 LibreOffice Calc 4.3.1.2를 사용하고 있습니다.

답변

1

imho가 이런 상황을 해결하는 가장 좋은 방법은 1 개의 거대한 복잡한 수식보다는 여러 개의 간단한 열로 문제를 나누는 것입니다. 항상보고 싶지 않은 열은 숨길 수 있습니다.

따라서 =if(a2="","",a2&" ")이라는 제목의 열을 만드십시오. 를 제외하고, 다른 모든 열을 연장 할 수있다

:

포함 할 뒤따라야에 대한
  • 은 "?" 다음과 같이 포함 할 별칭에 대한 =if(b2="?","",b2&" ")
  • 은 ","최고의 : =if(e2="","",", "&e2)

마지막으로 그냥 같은 것을 사용하여 작업을 각 열을 연결 : =f2&g2&h2&i2&j2.

이 문제는 매우 간단한 구성 요소로 문제를 해결하고 쉽게 디버깅 할 수 있습니다. 나중에 추가 기능을 추가하려는 경우 수식 중 하나를 다른 것으로 바꾸는 것이 쉽습니다.

+0

좋은 지적 나는이 방법을 시도 할 것이다 – Lou

+0

을 그건 그렇고, 당신은 셀이 null이 아니거나 개인적인 취향보다는, 널하는지 테스트 어떤 이유가 있습니까? – Lou

+0

위대한, 당신의 방법을 사용하고 성공적으로 모든 테스트 케이스에 맞는 concat 함께 왔어요. 당신의 도움. – Lou

1

나는 이것이 약간 재미 있다는 것을 알고 있지만, 더 알고리즘적인 접근을 제안 할 수 있습니까?

알고리즘은 : - G2이 화학식 리드

If a field is empty or ?, do nothing 

Else 

    If concatenation so far is empty, add field to concatenation 

    Else 

    Add a space followed by the field to concatenation 

-

= IF (OR (A2 = "", A2 = ""), F2 (F2 = IF" ", A2, F2 &" "& A2)

(복사 할 때

에서 다음과 같이 보이는)이 작동하도록 F 열에서 단일 아포스트로피를 둘 필요가 : -..

enter image description here

+0

좋은 방법 인 것처럼 보이고 +1을주었습니다.하지만 필요한 것을 얻었습니다. concat와 함께, 리처드의 방법은 나를 위해 잘 작동합니다. – Lou

+0

파인 레오, 감사하겠습니다. –

관련 문제