VBA의 기본 조작(응용 2)
4550 단어 VBA
우선은 전회 작성한 매크로를 버튼으로 동작할 수 있도록 해 봅니다.
사진과 같이 [개발]→[삽입]→[폼 컨트롤]을 열고 맨 왼쪽 상단의 사각형 버튼을 클릭합니다.
방금 만든 프로시저 이름을 선택하고 확인을 클릭합니다.
그리고 커서를 드래그 앤 드롭으로 버튼의 크기를 결정합니다.
사진처럼 버튼이 생기면 완료입니다. 시험에 추출한 데이터를 삭제해 보고 버튼에 의한 동작 확인을 해 봅시다!
총액과 주문서당 평균액 산출
Sub test2()
Cells(1, 8) = "総合計"
Cells(1, 9) = "総平均"
Dim i
Dim endRow
S = 0 '注文の総額
ctrRow = 1
'最終行を取得する
endRow = Range("A2").End(xlDown).Row
'注文額の入力されているセルの範囲
For i = 1 To endRow
S = S + Cells(i + 1, 7)
Next i
'すべての注文書の総額の入力
Cells(2, 8) = S
'一つの注文書あたり平均額
Cells(2, 9) = S / endRow
'金額表示の整理
Cells(2, 8).NumberFormatLocal = "#,###"
Cells(2, 9).NumberFormatLocal = "#,###.##"
End Sub
이 과정에서
End(xlDown).Row
를 사용하고 있지만 데이터 그룹의 마지막 행을 얻을 수 있습니다. [Ctrl]+[▽]를 이미지해 주시면 알기 쉬울까 생각합니다.평균값 이하의 데이터를 적색 채우기
Sub test3()
Dim i
endRow = Range("A2").End(xlDown).Row '最終行を取得する
'注文額のセルの範囲
For i = 1 To endRow
'注文額の列にあるセルが「空白」の場合
If Cells(i + 1, 7) = "" Then
'何もしない
Exit Sub
'セルが「空白」でない場合
Else
'セルの値が平均額より低い場合
If Cells(i + 1, 7) < Cells(2, 9) Then
'セルを赤くする
Range(Cells(i + 1, 1), Cells(i + 1, 7)).Interior.Color = RGB(250, 0, 0)
End If
End If
Next i
End Sub
최대 소계 데이터를 파란색으로 채우기
Sub test4()
S = 0 '最大小計
'最終行を取得する
endRow = Range("A2").End(xlDown).Row
'注文額が入力されている範囲
For i = 1 To endRow
'もしS(最大小計)よりセルの値が大きい場合
If S < Cells(i + 1, 5) Then
'S(最大小計)の値を更新する(セルの値を入れる)
S = Cells(i + 1, 5)
End If
Next i
For i = 1 To endRow
'S(最大小計)のセルの位置において
If Cells(i + 1, 5) = S Then
'特定の範囲のセルを青くする
Range(Cells(i + 1, 1), Cells(i + 1, 7)).Interior.Color = RGB(0, 0, 250)
End If
Next i
End Sub
회사명으로 정렬
Sub test5()
'最終行を取得する
endRow = Range("A2").End(xlDown).Row
'特定の範囲でソート関数(整列させる)を使用する
Call Range(Cells(2, 1), Cells(endRow, 7)).Sort(Key1:=Cells(2, 3), Order1:=xlAscending)
End Sub
Range(Cells(2, 1), Cells(endRow, 7))
의 부분에서 이번 정렬하고 싶은 데이터군의 범위를 모두 호출하는 곳에 주의해 주세요.평균 금액 이하의 주문 데이터를 추출 시트에 복사
Sub test6()
'抽出用のワークシートを作成する
Worksheets.Add After:=ActiveSheet
Sheets(2).Select
ActiveSheet.Name = "抽出"
Sheets(1).Select
'項目の表示
Worksheets("抽出").Range("A1") = "発注番号"
Worksheets("抽出").Range("B1") = "発注者"
Worksheets("抽出").Range("C1") = "発注先"
Worksheets("抽出").Range("D1") = "小計最大品名"
Worksheets("抽出").Range("E1") = "小計最大価格"
Worksheets("抽出").Range("F1") = "数量合計"
Worksheets("抽出").Range("G1") = "金額合計"
Dim i
j = 1
endRow = Range("A2").End(xlDown).Row '最終行を取得する
'平均額以下の注文データを抽出シートにコピーする
For i = 1 To endRow
If Worksheets(1).Cells(i + 1, 7) < Cells(2, 9) Then
Worksheets(1).Cells(i + 1, 7).EntireRow.Copy
Worksheets("抽出").Cells(j + 1, 1).PasteSpecial xlPasteFormulasAndNumberFormats
j = j + 1
End If
Next i
'余計なデータを削除する
Worksheets("抽出").Cells(2, 8).ClearContents
Worksheets("抽出").Cells(2, 9).ClearContents
End Sub
이상으로 VBA의 기본 조작의 해설을 종료합니다. 어땠습니까? 한 번에 이해하는 것은 어려울 수 있지만 몇 번이나 시도하거나 코드의 일부를 변경하여 동작을 확인해 보면 더 이해가 깊어진다고 생각합니다.
VBA에 한정하지 않고 모든 언어로 말할 수 있는 것입니다만, 내용을 완벽하게 이해하려고 하면 습득까지 엄청나게 시간이 걸리므로, 필요에 따라서 조사해 만들고 싶은 것이 만들 수 있는 것이 가장 중요합니다. 그리고 이번 기사를 계기로 프로그래밍의 즐거움을 조금이라도 알고 받으면 다행입니다.
Reference
이 문제에 관하여(VBA의 기본 조작(응용 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/borubo/items/709a06df3518efcaf13d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)