공백 항목을 보존하는 "분할"구분 문자열


10

Google 스프레드 시트 (새 버전) 의 SPLITJOIN기능 을 사용하여 일부 데이터를 조작 하려고하는데 SPLIT빈 항목을 보존하지 않기 때문에 문제 가 발생 합니다.

데이터 소스는 기본적으로 다음과 같이 설정됩니다.

   |  A    B    C    D
-----------------------
1  |  q    5    r    2
2  |  s         t    4
3  |  u    8    v
4  |  w    3    x    6

(이 데이터 세트의 빈 항목은 "측정 없음"을 나타내며 이는 측정과 다릅니다. 0)

AC에서 수식을 사용하여 원하는 결과를 얻습니다.

=SPLIT(JOIN("~",A1:A4,C1:C4),"~")

예상대로 q s u w r t v x각 셀에서 행을 생성합니다 .

그러나이 방법은 열 B및에서 작동하지 않습니다 D. JOIN예상대로 작동하여 출력을 제공합니다.

5~~8~3~2~4~~6

수행 SPLIT이 출력에, 그러나, 문제의 결과 : 나는 왼쪽 해요 5 8 3 2 4 6사이의 빈 셀없이, 5그리고 8나 사이 46쌍가 부러 (예를 들면 의미 sv세포를 비워 대응해야하지만, 대신 wx수행). 문제는 그들 사이에 널 항목이있는 두 개의 구분 기호가 아닌 단일 구분 기호로 SPLIT해석 ~~되는 것 같습니다 .

이런 종류의 시나리오에서 빈 항목을 보존하는 방법을 아는 사람이 있습니까?

원하는 출력은 다음과 같습니다

q  s  u  w  r  t  v  x
5     8  3  2  4     6

빈 필드에 공백이 문제를 해결합니까?
ale

""를 입력하면 빈 항목이 보존되지만 (감사, @AlE.!), 모든 항목에 ""를 수동으로 입력하면 시간이 많이 걸리고 기술적 인 솔루션을 사용하는 것이 좋습니다. 오류가 발생하기 쉽습니다.
LiberalArtist

스프레드 시트 공식은 나의 장점이 아닙니다. IF()빈 필드를 공백으로 자동 변환하기 위해 무언가를 할 수 있습니다 .
ale

1
업데이트 : @AlE.의 아이디어는 =ARRAYFORMULA(IF(ISBLANK(B1:B4)," ",B1:B4))빈 셀에서 ""로 더미 열 집합을 만드는 데 사용하여 즉시 계산을 수행 할 수있게했으며, 그런 다음 SPLITand에 사용됩니다 JOIN. 그래도 누군가에게 더 우아한 솔루션이 있기를 바랍니다. 이로 인해 문서에 많은 추가 자료가 추가되고 더 많은 측정이 데이터 세트에 추가되면 몇 가지 다른 위치에서 행 번호를 업데이트해야합니다. (AI E. 덕분에 적어도 나 지금은 데이터를 위기셔서!)
LiberalArtist

답변:


3

다음 해결책을 시도하십시오.

공식

=ARRAYFORMULA(TRIM(SPLIT(JOIN(" ,", A1:A4,C1:C4), ",")))

설명

SPLIT함수가 빈 셀을 무시 한다는 것을 이미 보여 주었 으므로이 문자열을 구분 기호로 선택합니다 " ,". JOIN함수 의 중간 결과는 다음과 같습니다.
여기에 이미지 설명을 입력하십시오

SPLIT함수 의 구분자를 다음과 같이 선택합니다 ",". SPLIT함수 의 중간 결과는 다음과 같습니다.
여기에 이미지 설명을 입력하십시오

그러나 이제 추가 된 공백을 처리해야합니다. 따라서 TRIM함수를 사용하여 모든 후행 또는 선행 공백을 제거했습니다 (와 함께 ARRAYFORMULA). LEN각 중간 결과 의 값을 비교하십시오 .

결과

여기에 이미지 설명을 입력하십시오

빈 셀을 보존하기 위한 SPLIT


2

다음 해결책을 시도하십시오.

암호

function myJoin() { 
  var output = []; 
  for(var i = 0, iLen = arguments.length; i < iLen; i++) {
    for(var r = 0, rLen = arguments[i].length; r < rLen; r++) {
      output.push(arguments[i][r][0]);
    }    
  }
  return [output];
}

용법

여기에 이미지 설명을 입력하십시오

함수에 원하는만큼 범위를 추가하면 처리됩니다. 이 작은 스크립트를 스프레드 시트의 스크립트 편집기에 추가하십시오 (도구> 스크립트 편집기; 저장 버튼을 누름).

빈 셀을 보존하기 위한 SPLIT


2

짧은 답변

다음 수식은 원하는 결과를 반환합니다.

=Transpose({A1:B4;C1:D4})

확장 된 답변

이 답변은 선택한 접근 방식을 작동시키는 방법을 논의하는 대신 원하는 결과를 얻는 방법을 제공하는 데 중점을 둡니다.

XY 문제

OP는 X를 얻고 싶어하며 Y가 그 결과를 반환해야한다고 생각합니다. 이 접근법은 Y에 약간의 경고가 있기 때문에 문제가됩니다. OP가 X를 얻는 방법을 요구하는 대신 Y를 작동시키는 방법에 대해 물어 보면서 시장 문제가 될 수 있지만 상황과 원하는 결과를 제공하기 때문에 그렇게 크지는 않습니다.

해결책

Google 스프레드 시트는 최종 사용자의 관점에서 여러 값을 갖는 결과를 매우 간단한 방식으로 처리 할 수 ​​있습니다. 반면에 특수 표기법을 사용하여 최종 사용자가 배열을 정의 할 수 있습니다.

위의 기능을 통해 SPLIT () 및 JOIN () 함수를 사용하지 않고 고유 한 경고없이 예상 결과를 얻을 수 있습니다.

공식 설명

{A1:B4;C1:D4}

두 개의 2 X 4 배열 / 범위로 만든 2 X 8 배열입니다. 세미콜론 ( ;)은 스프레드 시트의 소수점 구분 기호가 점 ( .) 이라고 가정하여 사용됩니다 . 소수점 구분 기호가 쉼표 인 경우 백 슬래시 ( \) 로 바꾸십시오 .

=Transpose({A1:B4;C1:D4})

2 X 8 배열을 8 X 2 배열로 변환합니다.

이 방법의 장점 중 하나는 빈 셀을 특수하게 처리 할 필요가 없다는 것입니다. 다른 장점은 매우 컴팩트 한 공식이며 적용하기가 매우 쉽다는 것입니다.

참고 문헌


1

분리 문자를 결합하고 ","(기본적으로 선행 공백이있는 쉼표)로 만들면 다시 분리 할 때 해당 공백이 자동으로 유지됩니다.

=SPLIT(JOIN(" ,",A1:A4),",")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.