
배경: 데이터베이스에서 데이터를 가져와 제품 라벨을 만드는 시트가 있습니다(인덱스 일치 조회 수식 사용). 시트에는 빈 행을 필터링하고 나머지 행을 자동 맞춤하는 매크로가 기록되어 있습니다. (저는 VBA에 대해 잘 알지 못하므로 무지함을 양해해 주시기 바랍니다)
워크시트: 데이터는 2개의 열(B 및 C)과 25개의 행에 채워집니다. 제품 번호를 입력하면 이러한 모든 작업을 완료하는 매크로를 만드는 데 도움이 필요합니다. 빈 행을 필터링하고 나머지 행을 자동 맞춤하고, 나머지 행 각각의 행 높이를 측정하고, 표시할 행 높이의 결합된 합계를 가져옵니다(바람직하게는 셀 B2에 있음). (예: "행 높이: 64")
모든 도움에 감사드리며 미리 감사드립니다!
답변1
다음과 같이 필터링된 데이터를 사용합니다.
다음과 같은 코드:
Sub TotalHeight()
Dim HowTall As Long
Dim Kount As Long
HowTall = 0
Kount = 0
For i = 2 To 25
Set r = Cells(i, "A").EntireRow
If Not r.Hidden Then
HowTall = HowTall + r.RowHeight
Kount = Kount + 1
End If
Next i
MsgBox Kount & vbCrLf & HowTall
End Sub
표시되는 행 수와 해당 행의 전체 높이를 알려줍니다.
메모:
높이의 단위는가리키다, 각 포인트는 0.013888889인치입니다.(100% 확대/축소). 이는 점보트론을 모니터로 사용하지 않는다고 가정합니다.
답변2
변수의 높이/개수를 빠르고 쉽게 얻으려면 모듈에 넣으십시오.
Public Function getHeight(rng As Range) As Long
getHeight = rng.Height
End Function
Public Function getCount(rng As Range) As Long
getCount = rng.SpecialCells(xlCellTypeVisible).Rows.Count
End Function
그런 다음 출력을 원하는 셀에 넣으면 =getCount(B4:B25)&" "&getHeight(B2:B25)/96
개수와 높이를 얻을 수 있습니다. 그러나 ppi는 모니터의 설정, 해상도 및 크기에 따라 변경된다는 점을 명심하십시오(따라서 실제 ppi를 가져와서 변경해야 할 수도 있음). /96
, 하지만 그렇게 할 수 있는 빠른 방법이 엄청나게 많습니다... 여기를 보거나 Google을 사용하세요)
필터 및 자동 높이 설정의 경우 "매크로 기록"이 완벽한 시작이므로 이제 필터를 가변 방식으로 설정해야 합니다. 변수 필터를 얻으려면 변경하는 동안 기록하고 필터 값을 다음으로 바꾸십시오. Range("A1").Value
(A1을 필터로 사용하려는 셀로 변경)
그래도 문제가 발생하면 StackOverflow에 문의하세요. (하지만 이미 가지고 있는 코드를 보여줘야 합니다. 그렇지 않으면 화를 낼 수도 있습니다.) :P