
안녕하세요 여러분 저는 Excel(현재 버전 2010)의 VBA 코딩을 처음 접했고 우리 조직에서 릴리스하는 테이블에서 작은 값을 억제하는 간단한 프로그램을 개선하려고 노력하고 있습니다. 내 데이터의 형식은 다음과 같습니다.
가장 왼쪽 열(보통 C)에는 행 레이블(예: 병원, 집, 기타, 누락된 데이터)이 있습니다. 다음 열에는 해당 카테고리의 레코드 수가 있습니다. 마지막 열에는 해당 행에 대한 백분율 값이 있습니다.
결과를 보고할 때 우리는 항상 셀 크기를 1-5로 표시하지 않습니다. 그러나 "누락된 데이터" 행의 레코드 수는 억제되지 않습니다.
나는 이 포럼의 다른 사용자의 도움을 받아 테이블의 모든 n 값을 "<6"으로 바꾸는 프로그램인 다음 매크로를 생성했습니다. 형식 설명을 사용하는 이유는 백분율을 억제하고 싶지 않고 항상 소수점 한 자리가 있는 숫자 형식으로 지정되기 때문입니다.
Sub SuppressN()
Dim rng As Range, cell As Range
Set rng = Selection
If rng Is Nothing Then Exit Sub
For Each cell In rng.Cells
If cell.NumberFormatLocal = "#,##0" And cell.Value >= 1 And
cell.Value <= 5 Then cell.Value = "<6"
Next
End Sub
제가 하고 싶은 것은 Excel에서 "Missing Data"라는 문자열을 발견하면 해당 코드를 실행하지 않도록 하는 것입니다.해당 행의 모든 값.
귀하가 제공할 수 있는 도움에 감사드립니다. 감사해요!
답변1
행을 건너뛰려면 행을 여러 Cells
개로 나눈 Rows
다음 조건을 사용하여 행을 실행할지 여부를 결정할 수 있습니다. 실제로 당신은 그것을 먼저 나누고 각 행의 Rows
작업을 수행합니다 . 어디에 나타날지 Cells
알면 가장 쉽게 수행할 수 있습니다 .Missing Data
암호Selection
조건을 포함하고 by 를 통과하는 외부 루프를 추가합니다 Rows
.
Sub SuppressN()
Dim rng As Range
Set rng = Selection
If rng Is Nothing Then Exit Sub
'go through by rows first
Dim rng_row As Range
For Each rng_row In rng_data.Rows
If rng_row.Cells(1, 1) <> "Missing Data" Then
'if good keep going on all the cells
Dim cell As Range
For Each cell In rng_row.Cells
If cell.NumberFormatLocal = "#,##0" And cell.Value >= 1 And cell.Value <= 5 Then
cell.Value = "<6"
End If
Next
End If
Next
End Sub
사진은 전후를 보여줍니다
NumberFormat
나는 그것을 에뮬레이트하고 싶지 않았기 때문에 조건을 제외 하고 해당 코드를 실행했습니다 . 여러분이 내용을 변경할 필요가 없도록 최종 코드에 다시 넣었습니다.
이 코드를 사용하려면 행 어딘가에 Missing Data
존재하는지 확인할 수 있는 신뢰할 수 있는 방법이 필요합니다. 방금 열의 첫 번째 셀을 확인했지만(귀하가 가지고 있는 것과 비슷해 보임) 여러 가지 다른 방법(예: 사용 Find
, 반복 및 값 확인 등)으로 이 확인을 수행할 수 있습니다.