Excel에서 골프 팁?


20

Excel이 코드 골프에 유효한 언어 인 것처럼 보이므로 ( '컴파일러'가 비어 있지는 않지만) 이것을 보지 못했습니다.

Excel은 골프 분야에서 다소 와일드 카드이며, 중간 정도의 복잡성 문제와 때로는 간단한 문제도 해결합니다. 종종 Excel은 문자열 조작 및 혼합 문자열 번호 조작과 관련된 문제에 능숙합니다.

Excel에서 골프를 즐기기위한 일반적인 팁은 무엇입니까? 적어도 Excel (NO VBA)에 다소 특정한 코드 골프 문제에 적용될 수있는 아이디어를 찾고 있습니다. 답변 당 하나의 팁을 입력하십시오.


4
분명히 셀룰러 오토마타는 :( ... 엑셀과 관련이있는 것이 아닙니다

VBA 로 UDF 를 만드는 것이 유효한지 궁금합니다 .
danieltakeshi

1
@danieltakeshi-아니오; Excel 응답이 아닌 Excel VBA를 사용하여 직접 창, 활성 시트 또는 서브 루틴에서 호출하면 일반적으로 유효한 것으로 간주됩니다.
Taylor Scott

답변:


11

속기 참조 :

프로그램이 여러 입력을 가져와야하는 경우 한 번에 입력 할 수 있습니다. 여러 셀을 배열로 읽으려면 예제와 같이 할 수 있습니다.

예 :
=len(A1)+Len(B1)+LEN(C1)
가능
=SUM(LEN(A1:C1))

=SUM(LEN(A1:C1 A2:C2 A3:C3))
될 수 있었다
=SUM(LEN(A1:C3))

=SUM(LEN(A1:A1024))
될 수 있었다
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
될 수 있었다
=SUM(LEN(A:C))


1
나는 이것이 좋은 팁 이 아니라는 것을 알고 있지만 그것이 포함되어야한다고 생각하면 뛰어납니다.

9

속기 연결 :

CONCATENATE기능이 대체 될 수있는 &이렇게 긴 첫 번째 인수는 문자열 또는 셀을 그대로의 시간 심벌 100 %.

예 :
=CONCATENATE(A1,B1)
단축 될 수 있음
=A1&B1


9

배열을 사용한 벡터화

함수가 배열을 싱글 톤 대신 인수로 사용할 때마다 해당 함수는 결과 값이 포함 된 배열을 해당 결정에 출력합니다.

예 :
=LEN(A1)+LEN(B2)+LEN(C3)
로 대체 할 수있다
=SUM(LEN({A1,B2,C3}))


1
메모리가 제대로 작동하면이 프로세스를 일반적으로 "벡터화"라고합니다.
Conor O'Brien

@ ConorO'Brien 감사합니다! 나는 대답을 바꿨다!

2

숫자를 텍스트로 변환 :

이것은 매우 간단한 팁이지만 그럼에도 불구하고 일부에게는 유용 할 수 있습니다 ...

  • 수식 내에서 숫자를 텍스트로 변환해야하는 경우 연결 연산자를 사용하여 숫자의 두 부분을 문자열 (예 :)로 결합 1&23하십시오.
  • 셀 참조에서 사용하기 위해 숫자를 텍스트로 변환해야하는 경우 (예 :) 셀 A1숫자 형식 추가 바이트가 필요하지 않도록 텍스트 로 .
  • 숫자-텍스트 방법 비교는 아래 차트를 참조하십시오.

빠른 참조 차트 :

+-------------------------------------------------------------------------------------+
|   | A               | B        | C         | D                | E                   |
|-------------------------------------------------------------------------------------|
| 1 | Formula         | Bytes    | Result    | ISTEXT(cell)¹    | ISTEXT(formula)²    |
|-------------------------------------------------------------------------------------|
| 2 | =TEXT(123,0)    | 12       | 123       | TRUE             | TRUE                |
| 3 | ="123"          | 6        | 123       | TRUE             | TRUE                |
| 4 | =1&23           | 5        | 123       | TRUE             | TRUE                |
| 5 | '123            | 4        | 123       | TRUE             | NOT VALID           |
| 6 | 123             | 3        | 123       | TRUE             | FALSE               |
| 7 | 123             | 3        | 123       | FALSE            | FALSE               |
+-------------------------------------------------------------------------------------+

Note: The result for cell C6 has been formatted as text, whereas the result for C7 has not.

¹ Denotes =ISTEXT(C2), =ISTEXT(C3), =ISTEXT(C4), etc.
² Denotes =ISTEXT(TEXT(123,0)), =ISTEXT("123"), =ISTEXT(1&23), etc.

1

셀 배열의 벡터화 :

배열을 사용한 벡터화 배열 내의 특정 형식을 사용하여 배열로 함수를 축소 할 수있는 방법을 보여줍니다. 셀과 동일한 작업을 수행하는 것이 가능하며 장기적으로 많은 바이트를 절약 할 수 있습니다. 다음과 같은 시트가 있다고 가정하십시오.

예제 시트

그리고 우리는 과일의 최고의 저장 수명을 찾고 싶습니다.

벡터화가 없으면 다음과 같은 두 공식을 사용할 수 있습니다. 여기에 이미지 설명을 입력하십시오

그리고 이것은 정답을 제공하지만,이 골프의 점수는 기존의 것이 아니며, 널리 인정되지 않을 것입니다. 또한 드래그 다운 기능 (Ew)을 사용하여 혼란스러운 답변을 제공합니다.

대신 E2의 수식을 사용하여 D 열에 함수를 배치 할 수 있습니다. 이렇게하려면 변수를 테스트하려는 범위의 배열로 바꿉니다 (이 경우 B2 및 C2). 따라서 공식은 다음과 같습니다.
여기에 이미지 설명을 입력하십시오

이렇게하면 몇 바이트를 절약 할 수있을뿐만 아니라 항목의 점수를 올바르게 지정할 수 있습니다.



0

ISBLANK () 속기 :

을 사용하는 대신 셀 (예 :) 이 비어 있는지 확인하는 데 =ISBLANK(A1)사용하십시오 .=A1=0A1

참고 : 셀에이 A1 포함되어 있으면이 바로 가기가 작동하지 않습니다0 . 이 경우을 사용해야 =A1="" 합니다.


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