PCメモ

Excelを中心とした業務改善の記録

グループごとの順位「SUMPRODUCT関数」

SUMPRODUCT関数 配列について 一覧表作成 都道府県別に何月の売上金額が多かったのか順位をつける。 (例)北海道 1位:6月 2位:4月 3位:5月 ↓ SUMPRODUCT関数 対応する配列の合計を返す関数。配列を乗算し、最後に1を足すことでグループ内での順位を出し…

よく使うコード

連続データ 連続データ www.excel725.com

VBA100本ノック14本目:社外秘シート削除

excel-ubara.com 出題内容 客先へ送付するブックを作成します。シート名に「社外秘」の文字が含まれるシートを削除してください。他のシートは計算式を消して値だけにしてください。※シート間参照の数式あり。※条件付き書式・入力規則は未使用。※対象はアク…

VBA100本ノック13本目:文字列の部分フォント

excel-ubara.com 出題内容 選択セル(Selection:複数範囲あり)の文字列に「注意」という文字があった場合は、その「注意」の文字だけを"赤の太字"に設定してください。セル以外(図形等)が選択されている場合は何もせずに正常終了するようにしてください。…

VBA100本ノック12本目:セル結合を解除

excel-ubara.com 出題内容 #VBA100本ノック 12本目A1から始まる表範囲のC列に金額が入っています。しかし、ところどころに結合されたセルがあります。セル結合を解除し、入っている金額を整数で均等に割り振ってください。(2枚目画像)端数処理方法は任意と…

VBA100本ノック11本目:セル結合の警告

excel-ubara.com 出題内容 画像のようにシートにはところどころにセル結合があります。これは放置しておく訳にはいきません。セル結合されているセルには、メモ(旧コメント)で警告文を出しましょう。※シートは任意、警告文はご随意に 自分の解答 Sub vba11…

VBA100本ノック10本目:行の削除

excel-ubara.com 出題内容 画像のように「受注」シートに今月の受注データがあります。受注数が空欄かつ備考欄に「削除」または「不要」の文字が含まれている行を削除してください。行の削除は行全体を削除してください。サンプルでは5行目と10行目を削除 自…

ExcelにVBAでパスワードをかける

Excelを開いた時にパスワードを入力させ、一致しなかった場合は自動で閉じる。 Sub pw() Dim st As String Dim i As Long For i = 1 To 3 On Error GoTo myError st = InputBox("パスワードを入力してください") '1234 If st = 1234 Then Exit For Else MsgB…

フィルター→新規ブックにコピペ→同じ階層に保存

キャリアがドコモとなっているデータを抽出して、新しいブックとして保存する。 保存先はマクロブックと同じ階層。「処理済」というフォルダを作成してその中に保存する。 Sub wrk() Dim wb As Workbook Dim st As String Dim strPath As String '同じ階層に…

複数ブックを編集

内容 ブックA.Sheet1のA列に入力してあるブック名を開き、B列で指定しているシートに対して処理を行う。 A列に入力してある各ブックは、ブックAと同じ階層に保存してある。 コード Sub wrk() Dim wb As String Dim ws As String Dim openBook As Workbook Di…

VBA100本ノック9本目:フィルターコピー

excel-ubara.com 出題内容 「成績表」シートに5教科の成績とG列に合否判定があります。「合格者」シートを新規作成し、合格者の氏名だけをA列に列挙してください。※点数は非公開なので「合格者」シートには間違っても出力しないでください。※何度でも実行で…

④参照元・参照先のトレース

選択しているセルの参照元を表示させる。 改善前 参照元を図形矢印で繋いでいる。 参照元が変わっても矢印が図形の為、参照していないセルと繋いだままになる可能性がある。 改善後 選択範囲の参照元を表示するマクロを構築。 Dim i As Long For i = 1 To Se…

VBA100本ノック8本目:点数の合否判定

excel-ubara.com 出題内容 「成績表」シートに5教科の成績表があります。以下の2条件を満たした者が合格となります。・5教科合計が350点以上・全ての科目が50点以上G列に、合格者に対しては「合格」と出力し、不合格は空欄にしてください。 自分の解答 Dim …

③散乱する入力欄をまとめる

散乱する手入力欄を一か所にまとめる 改善前 手入力箇所はA・C・Gのみ。 他の項目には関数が入っていて自動計算される仕様。 このままだとどこを入力すればいいのかわからない為、入力が漏れと関数をつぶす可能性がある。 改善後 入力欄を一か所にまとめた。…

VBA100本ノック7本目:日付データの扱い

excel-ubara.com 出題内容 #VBA100本ノック 7本目A列は文字列データ(表示形式が文字列)で日付が入っています。日付とみなされる場合はB列に月末日付をmmddの形式で出力してください。日付け以外の場合は空欄にしてください。例.B2は「0930」と出力する。※…

VBA100本ノック6本目:セルに計算式

excel-ubara.com 出題内容 #VBA100本ノック 6本目画像のようにA1から始まる表があります。D列にB列×C列の計算式を入れてください。ただし商品コードに"-"の枝番が付いている場合は計算式を入れずそのままにしてください。例.D2にはA2×B2の計算式を入れる。D4…

VBA100本ノック5本目:セルの計算

excel-ubara.com 出題内容 画像のようにB2から始まる表があります。B列×C列を計算した値をD列に入れ、通貨\のカンマ編集で表示してください。ただしB列またはC列が空欄の場合は空欄表示にしてください。例.D2にはB3×C3の計算結果の値を「\234,099」で表示、D…

②自動で関数を下の行に自動入力(テーブル)

テーブル機能を使って自動で範囲を拡張し、関数を自動入力する。 改善前 データを追加した後に、関数を下までコピペする。 (例)6行目に入力後、C列に入力されているVLOOKUP関数を6行目までコピペ。 改善後 テーブル化することで、自動的に自動拡張され関数…

①カレンダーの日曜を塗りつぶし(条件付き書式)

条件付き書式で塗りつぶしを自動化する。 改善前 日曜日の行を手動で塗りつぶしする。 月が変わったら塗りつぶすを消去し、また塗りつぶしし直す。 改善後 条件付き書式を設定することで、曜日が日の行は自動で塗りつぶしするようになった。 ①ルールを適用す…

VBA100本ノック4本目:セルの消去

excel-ubara.com 出題内容 画像のように1行目に見出し、A列に№が入っています。 この表範囲の一部には計算式が入っています。 (画像の最下行とD列には数式が入っています。) データ行数は毎回変化します。 見出し行とA列№と計算式は残し、定数値だけを消去…

VBA100本ノック 3本目:セルの消去

excel-ubara.com 出題内容 画像のように1行目に見出し、A列に№が入っています。 №行数およびデータ行数は毎回変化します。 この表の見出し(1行目)と№(A列)を残して、データ部分のみ値を消去してください。 自分の回答 Range("A1").CurrentRegion.Offset(…

棚卸とは

実地棚卸をしないとわからないこと 棚卸の目的 実地棚卸と帳簿棚卸の違い 売上原価の求め方 PL上の売上総利益(売上-売上原価) 売上原価とは 在庫は粉飾に使われやすい 売上を利用した粉飾 在庫を利用した粉飾 実地棚卸をしないとわからないこと 棚卸の目的…

作成したフォルダに保存

Sub test() Dim openBook As Workbook Dim strPath As String '作成したいフォルダのパス '①処理後フォルダ作成 '========================================================= '--- 同じ階層に「処理後」というフォルダを作成する ---' strPath = ThisWorkbo…

加工後同じ階層にコピーして保存

Sub 同じ階層に保存() Dim openBook As Workbook Dim openPath As String '選択したブック名を格納 openPath = Application.GetOpenFilename("xls,*.xls?") If openPath <> "False" Then '格納したブックを開く Set openBook = Workbooks.Open(openPath) 'マ…

同じ階層にフォルダを作成する(Mkdir)

Sub フォルダ作成() '--- 作成したいフォルダのパス ---' Dim strPath As String strPath = ThisWorkbook.Path & "¥処理後" '--- フォルダが存在しない場合のみMkDirで作成 ---' If (Dir(strPath, vbDirectory) = "") Then Call MkDir(strPath) Else MsgBox …

参考記事

個人情報サンプルデータ はてなブログにExcelファイルを貼りつける方法 VBAアドイン 個人情報サンプルデータ kazina.com はてなブログにExcelファイルを貼りつける方法 mdesign0516.hatenadiary.com VBAアドイン 踊るVBEアドイン ノ゚∀゚)ノヤットサー! | 踊るVBEア…

Do Loopステートメント(繰り返し処理)

指定した条件で処理を繰り返す A列の2行目以下の数字を合計する。 While条件(条件が正しい間) Sub test2() Dim i As Long Dim c As Long i = 2 '空白ではない間処理を続ける Do While Cells(i, 1) <> "" c = c + Cells(i, 1) i = i + 1 Loop MsgBox c End …

ネーミングについて(変数名・プロシージャ名)

よく使われる変数名 変数名 用途 語源 ct 数えるとき Count f オン/オフ Flag temp 一時的に使用する Temporrary i カウンタ変数 Iteration buf 一時的に格納 Buffer rc 戻り値を格納 Return Code n 一時的に使う数値 Number s 一時的に使う文字列 String 変…

Functionプロシージャ

Functionプロシージャは引数を渡さなくてもエラーにならない。

引数の渡し方(ByRef・ByVal)

引数の渡し方には「参照渡し」と「値渡し」がある。 指定しない場合は「参照渡し」になる。 参照渡し(ByRef) 値渡し(ByVal)