Excel의 수식에서 빈 셀 반환


219

Excel 수식에서 빈 셀을 반환해야하지만 Excel은 빈 문자열이나 빈 셀에 대한 참조를 실제 빈 셀과 다르게 처리합니다. 본질적으로 나는 다음과 같은 것이 필요합니다.

=IF(some_condition,EMPTY(),some_value)

나는 다음과 같은 일을하려고했습니다.

=IF(some_condition,"",some_value)

=IF(some_condition,,some_value)

B1이 빈 셀이라고 가정

=IF(some_condition,B1,some_value)

그러나 이들 중 어느 것도 진정한 빈 셀 인 것처럼 보이지 않습니다. 공식의 결과이기 때문에 추측하고 있습니다. 어떤 조건이 충족되는 경우에만 셀을 채우고 셀을 실제로 비워 둘 수있는 방법이 있습니까?

편집 : 권장대로 NA ()를 반환하려고했지만 내 목적으로도 작동하지 않았습니다. VB로 이것을 수행하는 방법이 있습니까?

편집 : 데이터를 데이터베이스로 가져 오는 응용 프로그램의 요구 사항에 맞게 서식이 지정된 다른 워크 시트에서 데이터를 가져 오는 워크 시트를 작성 중입니다. 이 응용 프로그램의 구현을 변경할 수있는 액세스 권한이 없으며 값이 실제로 비어 있지 않고 ""인 경우 실패합니다.


8
셀을 비워야하는 이유를 설명 할 수 있습니까? "공백"이 무엇인지에 따라 해결 방법이있을 수 있습니다.
JT Grimes

3
셀에 수식이 포함되어 있지 않습니까? 그러면 어떻게 비워 지거나 비울 수 있습니까?
Sinan Ünür

8
비슷한 문제가 있습니다. 그래프를 그릴 때 빈 항목의 값 0을 그래프에 표시하고 싶지 않습니다. 레코드가 빈 셀인 경우 그래프에서 해당 레코드를 생략하지만 아래의 "답변"에 나열된 방법 중 하나가 그래프에 0으로 표시됩니다. :(
Cobusve

5
그래프에 0이 표시되지 않도록하려면 빈 문자열 / 0 대신 NA () 함수를 사용하십시오. 이것은 셀에 # N / A를 넣을 것이며, 이는 그래프 루틴에 의해 무시됩니다.
Rob

5
# N / A를 사용하라는 Rob의 제안은 빈 셀과 다른 결과를 나타냅니다. # N / A는 셀에 대해 그래프 보간을 보간하는 반면, 실제로 비어있는 셀은 라인의 간격으로 취급됩니다. INTERPOLATION이 아닌 줄에 GAP을 원한다면 셀이 질문에 따라 # N / A가 아닌 비어 있어야합니다. 요청에 따라이를 해결하는 솔루션이 아래에 있습니다.
Mr Purple

답변:


50

VBA그런 다음 을 사용해야 합니다. 범위의 셀을 반복하고 조건을 테스트하고 일치하는 경우 내용을 삭제합니다.

다음과 같은 것 :

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next

6
빈 셀을 지우려는 특정 범위의 셀이 항상 있으면 해당 범위에 이름을 지정한 다음 SomeRange를 Range ( "MyRange")로 변경하여 Boofus의 수식을 수정할 수 있습니다. 셀 이름을 설정하려면 셀을 선택하고 리본의 수식 탭에서 이름 정의를 클릭 한 다음 이름 필드에 "MyRange"를 입력하십시오. (물론 MyRange를 원하는 것으로 바꿀 수도 있습니다.)
devuxer

31
Excel에는 null 상수가 없다는 것이 중요합니다.
ted.strauss

5
워크 시트 _calculate () 함수에 매크로를 넣으면 셀이 자동으로 비워집니다. 자세한 내용은 아래 내 답변을 참조하십시오.
Mr Purple

3
@ ted.strauss있다VbNullString
brettdj

5
@brettdj Excel이 아닌 VBA입니다. 우리는 NULL () 또는 BLANK ()와 같은 어떤 종류의 기능을 위해 오랫동안 열심히 노력했습니다.
존 펠티어

75

Excel에는 이렇게 할 수있는 방법이 없습니다.

Excel에서 셀의 수식 결과는 숫자, 텍스트, 논리 (부울) 또는 오류 여야합니다. "빈"또는 "공백"의 수식 셀 값 유형이 없습니다.

내가 본 한 가지 관행은 NA () 및 ISNA ()를 사용하는 것이지만 NA ()가 다른 함수로 처리되는 방식에 큰 차이가 있기 때문에 문제를 해결할 수도 있고 그렇지 않을 수도 있습니다 (SUM (NA ( ))는 # N / A이고 A1이 비어 있으면 SUM (A1)은 0입니다.


19
NA () 메서드는 빈 셀을 간격으로 표시하도록 설정된 그래프에 대해 100 % 작동합니다. 수식이 포함되어 있으므로 셀을 비워야하는 응용 프로그램으로 내보내는 경우에는 작동하지 않을 수 있습니다.
Cobusve

4
완벽한 해결책은 없습니다. NA ()는 좋은 옵션 중 하나입니다. 또 다른 하나는 빈 문자열 (의존) ''또는 ""
Jason

이 방법은 플롯 할 데이터에서 빈 셀을 동적으로 반환하기 위해 사용되므로 빈 셀을 무시하는 옵션을 그래프의 간격으로 효과적으로 사용할 수 있습니다. 필자의 경우 월간 진행률을 나타 내기 위해 12 개의 값을 플로팅하려고했지만 다음과 같은 수식을 사용하여 이전 달까지만 표시했습니다. = IF (MONTH (TODAY ())> C2; $ C $ 11 + C7; NA ( ))
EKI

이것은 나를 위해 일했습니다. 나는 매일 추가하는 데이터가있는 차트를 가지고 있습니다-스크럼에 대한 번 다운 차트는 선이 현재 날짜까지만 연장되는 것을보고 싶었습니다. 이것은 IF 문에서 NA ()를 사용하여 그렇게하는 데 도움이되었습니다. 감사!
theJerm

12
NA ()는 차이가 없습니다. 모두가 이것을 잘못 알고 있습니다. 값이 NA () 또는 # N / A 인 경우 Excel에서 마커를 플로팅하지 않지만 인접한 비 # N / A 값 사이에 보간 된 선을 그립니다 .
존 펠티어

38

네 가능합니다.

조건이 충족되면 소멸 공식을 trueblank로 평가할 수 있습니다. ISBLANK공식 테스트를 통과합니다 .

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

명명 된 범위를 설정하기 GetTrueBlank만하면됩니다 (예 :). 질문과 마찬가지로 다음 패턴을 사용할 수 있습니다.

=IF(A1 = "Hello world", GetTrueBlank, A1)

1 단계. 이 코드를 VBA의 모듈에 넣습니다.

Function Delete_UDF(rng)
    ThisWorkbook.Application.Volatile
    rng.Value = ""
End Function

2 단계 에서 Sheet1A1셀 범위라는 추가 할 GetTrueBlank다음 식 :

=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")

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

그게 다야. 더 이상 단계가 없습니다. 자기 소멸 공식을 사용하십시오. B2다음 공식 을 셀에 넣으십시오 .

=IF(A2=0,GetTrueBlank,A2)

B20을 입력하면 위의 공식은 trueblank로 평가됩니다 A2.

여기에서 데모 파일을 다운로드 할 수 있습니다 .

위의 예에서 수식을 trueblank로 평가하면 빈 셀이됩니다. 검사 결과와 ISBLANK양 TRUE 화학식 결과. 이것은 공식과 같은하라 키리입니다. 조건이 충족되면 셀에서 수식이 사라집니다. 공식이 사라지지 않기를 원하지만 목표에 도달합니다.

인접한 셀에 결과를 반환하도록 수식을 수정하면 수식이 자체적으로 종료되지 않습니다. 인접 셀에서 UDF 결과를 얻는 방법을 참조하십시오 .

나는 FrankensTeam이 공개 한 공식 결과로 trueblank를 얻는 예를 보았습니다 : https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- 세포


5
셀을 물리적으로 비우지 않고이 작업을 수행 할 수있는 방법이 없다는 것은 미친 듯이 미친 문제입니다. 여기서 유일한 단점은 재 계산 할 때 수식을 다시 끌어 야한다는 것을 기억해야한다는 것입니다.하지만 통합 문서 이벤트를 설정하면 가능합니다.
Some_Guy

달콤한 해결 방법을 사용하기 전에 역효과가 발생할 수 있습니다 .
GSerg

@GSerg VBA로 무한정 반복 될 수 있고 이런 식으로 프로그램이 중단 될 수 있다는 것입니까? VBA는 원숭이의 손에 있는 면도칼 일 수 있습니다 . 그리고 있다는 소문이 또 다시 총을 사자는 그보다 :-) 놀라게한다
Przemyslaw Remin

@PrzemyslawRemin 아니요, Excel 충돌을 포함하여 다양한 임의의 일이 발생할 수 있다고 말하고 있습니다 .
GSerg

20

어쩌면 이것은 부정 행위이지만 효과가 있습니다!

또한 그래프의 소스 ​​인 테이블이 필요했으며 빈 셀이나 제로 셀이 그래프에서 점을 생성하는 것을 원하지 않았습니다. "빈 셀을 간격으로 표시"하려면 라디오 속성 단추를 클릭하여 그래프 속성, 데이터 선택, 숨겨진 셀 및 빈 셀을 선택해야합니다. 이것이 첫 번째 단계입니다.

그런 다음 플롯을 원하지 않는 결과로 나타날 수있는 셀에서 수식을 IF 문에 다음과 같은 NA()결과를 넣습니다.=IF($A8>TODAY(),NA(), *formula to be plotted*)

이것은 유효하지 않은 셀 값이 발생할 때 포인트없이 필요한 그래프를 제공합니다. 물론 이것은 유효하지 않은 값을 가진 모든 셀을 read로 남겨두고 #N/A지저분합니다.

이를 정리하려면 유효하지 않은 값을 포함 할 수있는 셀을 선택한 다음 조건부 서식 -새 규칙 을 선택하십시오 . '포함 된 셀만 서식 지정'을 선택하고 규칙 설명 아래의 드롭 다운 상자에서 '오류'를 선택하십시오. 그런 다음 형식에서 글꼴-색상-흰색 (또는 배경색이 무엇이든)을 선택하십시오. 다양한 버튼을 클릭하면 잘못된 데이터가있는 셀이 공백으로 표시됩니다 (실제로 #N/A흰색 배경에 흰색 텍스트 가 포함되어 있지만 공백으로 표시됨). 그러면 연결된 그래프에도 잘못된 값 포인트가 표시되지 않습니다.


6
아니!!! "빈 셀을 간격으로 표시"셀이 비어 있어야합니다. 만약 그들이 NOTHING이 아닌 # N / A를 포함한다면, 그래프 루틴은 그것들을 라인의 갭으로 남겨두기보다는 # N / A 셀에 보간 할 것입니다. 만약 당신이 # N / A 셀을 보간하기를 원한다면 그것은 괜찮습니다. 그러나이 경우 "빈 셀을 간격으로 보여줍니다"는 적용되지 않습니다
Mr Purple

4
@GreenAsJade 이것은 OP의 요구에 맞지 않기 때문에 실제 답변이 아닙니다. 그래프 문제에 대해서는 별도의 질문이 있어야합니다.
ZX9

10

이것이 내가 사용하고있는 데이터 세트에 대한 방법입니다. 그것은 복잡하고 어리석은 것처럼 보이지만 위에서 언급 한 VB 솔루션을 사용하는 방법을 배우는 유일한 대안이었습니다.

  1. 모든 데이터를 "복사"하고 데이터를 "값"으로 붙여 넣었습니다.
  2. 그런 다음 붙여 넣은 데이터를 강조 표시하고 빈 셀에 문자 가있는 "바꾸기"( Ctrl- H)를 수행했습니다 q. 데이터 시트의 어느 곳에도 없기 때문에 선택했습니다 .
  3. 마지막으로, 나는 또 다른 "대체"를하고 q아무것도 대체 하지 않았다.

이 3 단계 프로세스는 모든 "빈"셀을 "빈"셀로 바 꾸었습니다. 빈 셀을 빈 셀로 바꾸는 것만으로 2 단계와 3 단계를 병합하려고했지만 작동하지 않았습니다. 빈 텍스트를 실제 텍스트로 지정한 다음 해당 텍스트를 빈 셀로 바꿉니다.


이것이 귀하의 경우에는 효과가 있었지만 자동으로 적용 할 수있는 솔루션이 필요했습니다. 궁극적으로 VB 매크로를 사용하여 비어있는 것으로 판단되는 것을 지우는 것 같습니다. 이 매크로는 파일을 저장하기 직전에 실행되었습니다.
Bryan Ward

4
이것이 자동 일 필요는 없기 때문에 나에게 가장 좋았지 만 빨리해야합니다. 본질적으로 Excel은 찾기 및 바꾸기를 통해 추가 된 빈 값을 존중한다는 것을 의미합니다.
rickcnagy

10

실제로 셀에 값이 0 일 때 셀을 비어있는 것으로 표시하려는 경우 대신 empty()함수 가 없기 때문에 비어 있거나 비어있는 셀을 생성하는 수식을 사용하는 대신,

  • 빈 셀을 원하면 and 0대신""

  • 셀의 숫자 형식을 설정하십시오. 양수와 음수 (세미콜론으로 구분 된 처음 두 항목)에 대해 원하는 것을 제시해야합니다. 필자의 경우, 내가 가지고있는 숫자는 0, 1, 2 ...이며 0을 비워두기를 원했습니다. (나는 텍스트 매개 변수가 무엇인지 알지 못했지만 필요한 것 같았습니다).

    0;0;"";"text"@
    

4
이렇게하면 셀이 비워지지는 않지만 (공식으로 빈 셀을 만들 수있는 방법은 없습니다) 숫자가 0이면 비어있는 것처럼 보입니다. 그러나 올바르지 않습니다. 0; -0; ""(빼기 부호 참고) 또는 0; -0이어야합니다. 따옴표없이. 세 번째 세미콜론과 "text"@ 부분은 필요하지 않습니다. 세미콜론으로 구분 된 필드의 의미는 양수, 음수, 0 및 텍스트를 표시하는 방법입니다 (후자는 형식에 @를 포함해야 함). office.microsoft.com/en-gb/excel-help/…
cvoinescu

당신은 신 선생님입니다. 당신은 Visual Basic에서 저를 구했습니다. 규칙
CommaToast

7

을 사용하여 셀을 평가 해보십시오 LEN. 수식 LEN이 포함되어 있으면를 반환 0합니다. 텍스트가 포함되어 있으면보다 큼을 반환 0합니다.


이것이 원래 질문에 도움이되지는 않지만 실제로 많은 경우에 나쁜 대답은 아닙니다. ""을 (를) 반환하도록 강요된 경우에 효과적입니다.
Technium

큰 대답이지만 약간 혼란 스럽습니다. 테스트하려는 셀이 숫자를 반환 ""하거나 비어 있습니다. LEN(cell)>0숫자가 있으면 (0 포함, 수식으로 계산 된 경우 포함) true를 반환하고 빈 문자열이거나 비어 있으면 false를 반환합니다.
Chris

7

와우, 놀라운 사람들이 그 질문을 잘못 읽었습니다. 셀 비워 보이게 만드는 것은 쉽습니다 . 문제는 셀을 비워야하는 경우 Excel 수식은 "값 없음"을 반환 할 수 없지만 값만 반환 할 수 있다는 것입니다. 0, 공백 또는 ""를 반환하는 것은 값입니다.

따라서 "마법의 값"을 반환 한 다음 검색 및 바꾸기 또는 VBA 스크립트를 사용하여 값을 바꾸지 않아야합니다. 공백이나 ""를 사용할 수는 있지만 "NODATE"또는 "NONUMBER"또는 "XXXXX"와 같은 명백한 값을 사용하여 발생하는 위치를 쉽게 확인할 수 있습니다. ""찾기가 매우 어렵습니다. " 스프레드 시트에서.


1
그렇습니다. 함수를 사용하여 "#EMPTY"를 생성 한 다음 "워크 시트 계산"이벤트 서브 루틴에서 일부 코드를 표시했습니다. 전체 솔루션에 대한 내 대답을 확인하십시오.
Mr Purple

7

사용 COUNTBLANK(B1)>0대신에 ISBLANK(B1)당신의 내부 IF문.

달리 ISBLANK(), COUNTBLANK()고려 ""빈 반환 1로.


불행히도 Excel은 = COUNTBLANK (IFNA (VLOOKUP (...), ""))을 유효하지 않은 것으로 간주합니다 (!)
NetMage

6

비어있는 값을 반환하지만 실제로 요청 된 셀만큼 비어 있지 않은 값을 반환하는 많은 답변 ...

요청에 따라 실제로 빈 셀을 반환하는 수식을 원할 경우. VBA를 통해 가능합니다. 여기 정확히 똑같은 코드가 있습니다. 셀을 비울 때마다 # N / A 오류를 반환하는 수식을 작성하여 시작하십시오. 그런 다음 내 솔루션은 해당 # N / A 오류가 포함 된 모든 셀을 자동으로 지 웁니다. 물론 원하는 것을 기반으로 셀 내용을 자동으로 삭제하도록 코드를 수정할 수 있습니다.

"시각적 기본 뷰어"를여십시오 (Alt + F11) 프로젝트 탐색기에서 관심있는 통합 문서를 찾아 두 번 클릭하십시오 (또는 마우스 오른쪽 단추를 클릭하고보기 코드 선택). "코드보기"창이 열립니다. (일반) 드롭 다운 메뉴에서 "워크 북"을 선택하고 (선언) 드롭 다운 메뉴에서 "시트 계산"을 선택하십시오.

Workbook_SheetCalculate 함수 안에 다음 코드 (JT Grimes의 답변을 기반으로)를 붙여 넣습니다.

    For Each cell In Sh.UsedRange.Cells
        If IsError(cell.Value) Then
            If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
        End If
    Next

매크로 사용 통합 문서로 파일 저장

주의 :이 과정은 메스와 같습니다. # N / A 오류로 평가되는 모든 셀의 전체 내용을 제거하므로주의하십시오. 그들은 갈 것이고 당신은 그들이 포함했던 공식을 다시 입력하지 않고 그들을 다시 얻을 수 없습니다.

NB2 : 파일을 열 때 매크로를 활성화해야합니다. 그렇지 않으면 파일이 작동하지 않고 # N / A 오류가 삭제되지 않은 상태로 남아 있습니다.


2
완전 자동 / 핸즈프리 / 동적이어야하고 #NA 오류를 생성하기 위해 공식을 다시 입력하지 않으려는 경우 매크로 코드를 다시 작성하여 문제의 시트를 복제하여 #NA 대신 빈 셀을 남겨두고 그래프를 생성 할 수 있습니다 중복 시트에서. (이 의견이 공개 된 경우 코드를 추가하겠습니다).
Mr Purple

4

이 답변은 OP를 완전히 다루지는 않지만 비슷한 문제가 발생하여 여러 차례 답변을 검색 한 적이 있습니다.

경우 당신이 할 수 다시 필요한 경우 공식이나 데이터를 당신이되고 빈 셀을 필요로하는 부분을 실행할 준비가되면, 다음 실제로 (그리고 설명에서 당신이 할 수있는 것처럼 보이는) 비우 다음 지역을 선택할 수 있으며를 다음 vba 매크로를 실행하십시오.

Sub clearBlanks()
    Dim r As Range
    For Each r In Selection.Cells
        If Len(r.Text) = 0 Then
            r.Clear
        End If
    Next r
End Sub

현재 표시 ""되거나 수식 만있는 셀의 내용이 지워집니다.


4

내가 사용한 것은 작은 핵이었다. 빈 셀을 반환하는 T (1)을 사용했습니다. T는 문자열이고 빈 셀이면 인수를 반환하는 Excel의 함수입니다. 따라서 할 수있는 일은 :

=IF(condition,T(1),value)

길이가 0 인 문자열을 작성합니다 (ISBLANK (CELL) = FALSE).
vinh

이것은 작동하며 허용되는 답변이어야합니다. 고마워요, 아메드 내 유스 케이스는 약간 다릅니다. AVERAGE (), MIN (), MAX (), STDEV (), COUNT () 및 MEDIAN ()과 같은 집계 함수가 값을 무시하도록 셀을 비워 두려고합니다.
Charlie Reitzel

2

Excel을 더 깨끗하게 보이게하기 위해 다음과 같은 해결 방법을 사용했습니다.

계산을 수행 할 때 ""는 오류를 제공하므로이를 숫자로 취급하여 중첩 된 if 문을 사용하여 ""대신 0을 반환하고 결과가 0 인 경우이 방정식은 ""를 반환합니다.

=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))

이렇게하면 엑셀 시트가 깨끗해 보일 것입니다 ...


1
이것은 문제에 대한 해결책이 아닙니다. 시트는 깨끗해 보이지만 그래프와 관련하여 ""값은 "비어 있지 않습니다".
GreenAsJade

1

HLOOKUP 및 VLOOKUP과 같은 조회 기능을 사용하여 데이터를 워크 시트로 가져 오면 함수를 대괄호 안에 넣고 함수는 {0} 대신 빈 셀을 리턴합니다. 예를 들어

조회 셀이 비어 있으면 0 값을 반환합니다.

    =HLOOKUP("Lookup Value",Array,ROW,FALSE)

조회 셀이 비어 있으면 빈 셀을 반환합니다.

    =(HLOOKUP("Lookup Value",Array,ROW,FALSE))

이것이 다른 기능과 함께 작동하는지 모르겠습니다 ... 나는 시도하지 않았습니다. 이것을 달성하기 위해 Excel 2007을 사용하고 있습니다.

편집하다

실제로 IF (A1 = "",,)를 true로 되돌리려면 동일한 셀에 &로 구분 된 두 개의 조회가 필요합니다. 이 문제를 해결하는 쉬운 방법은 두 번째 조회를 행 끝에 있고 항상 비어있는 셀로 만드는 것입니다.


1

지금까지 이것은 내가 생각해 낼 수있는 최선입니다.

ISBLANK함수를 사용하여 IF명령문 내에서 셀이 실제로 비어 있는지 확인합니다 . 셀에 아무 것도 A1없고 (이 예에서는 SPACE 문자라도) 셀이 없으면 EMPTY계산이 수행됩니다. 이렇게하면 작업 할 숫자가 될 때까지 계산 오류가 표시되지 않습니다.

셀이 있으면 EMPTY계산 셀에 계산 오류가 표시되지 않고 셀이 있으면 NOT EMPTY계산 결과가 표시됩니다. 데이터가 나쁘면 두려운 오류가 발생합니다 #DIV/0!

=IF(ISBLANK(A1)," ",STDEV(B5:B14))

필요에 따라 셀 참조 및 수식을 변경하십시오.


1
이 문제는이 결과를 사용하여이 검사를 다른 모든 셀에 전파해야한다는 것입니다.
guthrie

0

대답은 긍정적입니다. = IF () 함수를 사용하고 셀을 비워 둘 수 없습니다. "비어있는 것"은 비어있는 것과 다릅니다. 수식을 지우지 않고 빈 셀을 만들지 않고 두 따옴표를 연속으로 사용하는 것은 수치입니다.


VBA를 사용할 준비가 된 경우 가능합니다. 다른 답변에 따라.
Mr Purple

-1

Google은 매우 비슷한 문제로 나를 여기에 데려 왔으며 마침내 내 요구에 맞는 솔루션을 찾았습니다. 다른 사람도 도울 수 있습니다 ...

나는이 공식을 사용했다 :

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