본문 바로가기
공부/Notion 노션

노션 숫자,텍스트 유형 수식 오류 해결법

by 슈쑥 2023. 1. 13.
반응형

 

 

노션에서 필요한 수식을 만들다 보면 뜨는 오류들 중

간단하게 해결할 수 있는 걸 가져와봤습니다.

아마 다들 아실테지만 저는 몰랐기에 저 같은 분들을 위한 기록(?)

 

 

먼저 숫자 텍스트 오류가 나는 이유부터 설명 드릴게요.

여러분이 60이라는 숫자 속성을 가지고 "60분"이라는 값을 표시하고 싶어서 prop("시간")+"분" 을 수식창에 입력했다면
아마 유형이 텍스트 유형과 일치하지 않습니다. 라는 오류 문구를 보게 되실거예요.
그 이유는 아래에서 자세히 설명 드리겠지만 prop("시간")숫자 속성인데 "분"텍스트 속성이기 때문입니다.
"분" 처럼 뒤에 문구를 추가하고 싶다면 숫자 속성을 텍스트 속성으로 바꿔줘야 합니다.

텍스트 속성과 숫자 속성을 섞어서 사용할 수가 없다는 점을 꼭 기억해주세요.

 


 

1. 유형이 텍스트 유형과 일치하지 않습니다.

 

말 그대로 prop("Completed") 속성이 텍스트 유형이 아니기 때문에

지금 수식은 적용이 안 된다는 안내입니다.

 

수식창을 보시면 앞 뒤로 "  ""%" 같은 텍스트가 붙어있는게 보이시죠?

노션 수식은 텍스트 유형+숫자 유형을 같이는 못 씁니다.

대신 숫자를 텍스트화 하거나

텍스트에 있는 숫자문자를 숫자 유형으로 바꿔줄 수는 있어요.

 

그래서 첫 번째, format 함수 사용하기입니다.

 

 

이렇게 노션 수식창에서 왼쪽 함수 목록에 마우스를 대면 우측에 해당 함수에 대한 설명이 뜨는데요

format 함수에 대한 설명이 잘 나와있죠?

 

'인수를 문자열로 형식 지정합니다.'

 

format(42) 는 "42"로 바뀐다는 예시도 같이 나와있어요.

수식창에서 42는 숫자 "42"는 문자입니다. ""로 숫자 문자를 구분하시면 돼요.

 

위에서 prop("Completed") 가 텍스트 유형이 아니라는 안내가 떴으니

prop("Completed") 을 텍스트로 바꿔주면 됩니다.

format(prop("Completed"))안에 이렇게 숫자 속성을 넣어주면

 

짠 이렇게 해결되었습니다.

간단하게 생각해서 "52"와 "20"이라는 데이터가 있다면
"52"+"20"은 뭘까요?
이게 숫자라면 72였겠지만 이건 문자이기때문에 "A"+"B"랑 똑같다고 생각하셔야 해요.
즉 "5220"이라는 결과가 나오게 됩니다.

그렇다면 "52"+20 = ? 당연히 사용자가 뭘 원하는지 알 수가 없으니 답이 안 나오겠죠?
72라는 답을 원하는건지 "5220"이라는 답을 원하는건지
"5220"이라는 값을 출력하고 싶다면 20을 "20"으로 만들어주면 되는거죠 ㅎㅎ

 

아무튼 다음 

 


 

2. 유형이 숫자 유형과 일치하지 않습니다.

 

 

북트래커를 만들던 중 만난 유형이 숫자 유형과 일치하지 않습니다.라는 문구...

사진상 데이터베이스를 보시면 total p.는 왼쪽 정렬

start와 end는 우측 정렬인 게 보이시죠?

우측 정렬은 숫자, 왼쪽 정렬은 텍스트 유형입니다.

 

저 total p. 는 관계형 데이터베이스의 롤업 속성인데 원래 데이터베이스에서는 숫자 속성이었어요.

근데 롤업으로 데려왔더니 텍스트 유형으로 바뀌었더라고요.

이걸 몰라서 또 뭐가 문제냐며 키보드만 괴롭혔는데...

 

이것도 간단하게 해결됩니다.

prop(total p.)가 텍스트 유형이니 숫자로 바꿔주시면 됩니다.

사용할 함수는 toNumber()

 

 

'텍스트에서 숫자를 구문 분석합니다.'

> 텍스트에서 숫자를 뽑아준다는 거죠.

 

 

prop(total p.)를 toNumber로 감싸서 숫자로 뽑아쥐니 바로 해결됐습니다 :)

 


 

"42"를 42로 바꿔줄 때는 toNumber()

42를 "42"로 바꿔줄 때는 format()

 

100% 같이 숫자 뒤에 "%" 같은 텍스트를 넣어주고 싶으실 때는

format(100) + "%"처럼 숫자를 텍스트화시켜 주시면 됩니다!

 


 

3. 괄호와 콤마 확인하기

 

제일 간단하고 제일 눈 아픈 부분인데요..

저는 수식에 오류 났을 때 괄호가 제대로 닫혀있지 않은 경우가 제일 많았습니다.

코딩 프로그램들처럼 괄호가 알아보기 쉽게 되어있으면 참 좋겠지만 어쩔 수 없죠...

텍스트나 숫자 오류라고 안 뜨고 그냥 오류 nnn문자 이렇게 뜨면 정말 높은 확률로 괄호 하나 빠진거예요 ㅠ

어디가 빠졌나 열심히 찾아보시면 해결됩니다... 한참 고민하다 괄호 하나 넣었더니 해결되는 경우가 90%..

 

수식을 쓰실 때 미리 괄호 닫아두기, 콤마 미리 찍어두기!

 

수식 입력하실 때 if(조건, 참, if(조건, 참, if( 이런 식으로 입력하셨었다면

if(,,) > if(,,if(,,)) > if(,,if(,,if(,,))) 이런 식으로

괄호도 미리 닫아두고, 필요한 부분의 콤마를 미리 찍어두시면 확인하기 훨씬 편해요.

 

중간에 다른 수식을 넣어야 한다면 if(,,if(,,))round(66.1) 와 같이 끝 부분에 써서

if(,,if(,,round(66.1)))    ctrl+x 로 잘라내기 후 넣고 싶은 부분에 ctrl+v 붙여넣기 해주시면 더 편합니다 :)

 

 

4. Invalid left hand side of assignment operator

 

 

수식을 잘못 작성 했을 때 뜨는 문구입니다.
화면속 커서 부분에 ="0" 이라는게 보이시나요?
저 부분을 =="0"으로 바꿔야 맞는 수식인데 =이 하나만 들어갔으니 수식 자체가 안 먹고 있는 상태입니다.
이 문구가 뜬다면 수식 작성시 기호를 잘 작성하셨는지 한 번 확인해보세요 :)

 

 

 

반응형

댓글