大量のExcelデータを立ち上げないで処理をする

Dim Ws As WorksheetDim Ds As WorksheetDim Gyo2 As Long Dim Mydata As VariantDim Mydata1 As VariantDim Mydata2 As VariantDim Mydata3 As VariantDim MyArray() As VariantDim MyRow() As LongDim Item As LongDim Idx As Long Set Ws = Wb.Sheets("A"…

CSVを読み取るVBA (思惑通り読み取れないデータの対処)

各CSVのデータを1行ずつ読み取る予定で作成したVBA Set Wb = Workbooks(WBNAME)Set Ws = Wb.Sheets("A")Set Data_Sh = Wb.Sheets("B") Gyo2 = Ws.Cells(Rows.Count, 3).End(xlUp).RowData_Sh.Visible = True Application.ScreenUpdating = False 'I取得したC…

VBA 連想配列で複数の情報を得たい場合

Sub 連想配列で複数の情報を得たい場合()'************事前準備*************************** '参照設定:Microsoft Scripting Runtime '*********************************************** 'Dim YourDic As Dictionary 'Set YourDic = New Dictionary '******…

配列 連想配列を使って複数個所にデータ入力

Sub 集計案動作確認済()'***********************************************'データシートにある装置を格納'***********************************************Dim XX As LongDim YY As LongDim AA As LongDim Elem As LongDim YourDs As WorksheetDim Yourabc…

配列 リストの追加漏れを探す

Sub 不足リスト作成() '***********************************************'管理表シートにないabcd装置を追加作成'***********************************************Dim Ws As WorksheetDim Myabcd() As VariantSet Ws = Sheets("2026")Dim XX As LongXX = W…

配列 データ転記

Sub 管理表更新()'***************************************'集計シート、データシートの設定'***************************************Dim XX As Long, YY As LongSet Mydata = Sheets("2026")Set Yourdata = Sheets("japan") XX = Mydata.Cells(Rows.Count…

配列(基礎実践)連想配列でSUMIF

Sub 連想配列SUMIF()'************事前準備*******************'参照設定:Microsoft Scripting Runtime'*************************************** '***************************************'集計シート、データシートの設定'*****************************…

配列(基礎実践)参照設定をしない連想配列Currentregionを使う

Sub 参照設定をしない連想配列Currentregionを使う() '***************************************'タイマーをセット'***************************************Dim startTime As Single, endTime As Single startTime = Timer'*******************************…

配列(基礎実践)参照設定:Microsoft Scripting Runtime連想配列範囲を指定で使う

Sub 連想配列そのまま使える()'参照設定:Microsoft Scripting Runtime'タイマーをセットDim startTime As Single, endTime As Single startTime = Timer'集計表のホスト名を配列に格納Dim XX As LongDim arrSyukei As VariantSet Smg = Sheets("Sheet2")Set…

配列(基礎実践)参照設定:Microsoft Scripting Runtime連想配列Currentregionを使う

Sub 連想配列Currentregionを使う()'************事前準備*******************'参照設定:Microsoft Scripting Runtime'*************************************** '***************************************'タイマーをセット'*****************************…

配列(基礎実践)ForNextによる処理

Sub ForNextによる処理()'タイマーをセットDim startTime As Single, endTime As Single startTime = Timer '集計表のホスト名を配列に格納Dim XX As LongDim arrSyukei As VariantSet Smg = Sheets("Sheet2")Set Myedge = Sheets("Sheet1") XX = Smg.Cells(…

並び替え

Sub 並び替え()Dim XX As Long If Ws.FilterMode = True ThenWs.ShowAllDataEnd If XX = Ws.Cells(Rows.Count, 3).End(xlUp).Row Ws.Rows("4:" & XX).Select With Ws.Sort With .SortFields .Clear .Add Key:=Ws.Range("A5"), Order:=xlAscending .Add Key:=…

オートフィルタ抽出データを別シートにコピー

Sub オートフィルタ抽出データを別シートにコピー() Dim Sh1 As WorksheetDim Sh2 As Worksheet 'シートを変数へ格納 Set Sh1 = Sheets("2025") Set Sh2 = Sheets("勝") 'フィルターでデータ抽出 Sh1.Range("A2").AutoFilter 2, "勝" 'フィルター抽出結果を…

配列 重複した要素を削除

Sub test()Dim Myrange As RangeDim uniqueArray As VariantDim ii = Sheets("Sheet3").Cells(Rows.Count, 1).End(xlUp).Row Set Myrange = Sheets("Sheet3").Range("A1:A" & i) Dim myDic As Object Set myDic = CreateObject("Scripting.Dictionary") For …

カード番号や郵便番号から「-」を取り除き1文字ずつセルに入力する

Sub 数字分割()Dim KaisenidDim AADim BunkatuKaisenid = Replace(Sheets("Sheet1").Cells(1, 1), "-", "") For AA = 1 To Len(Kaisenid) Bunkatu = Mid(Kaisenid, AA, 1) Sheets("Sheet1").Cells(2, AA) = Bunkatu Next AAEnd Sub

シートの追加

Sheet1シートA列のセルの内容をシート名にして末尾にシートを順次追加し 同じ文字列があった場合はシート名変換を行わず行数分のシートを作成する Sub シート追加()Dim i, jOn Error Resume Nextj = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row Fo…

指定範囲内のセルに情報が入っているか調べる

CountBlank関数を使って対象のレコードに情報が入っているか調べる Sub AAA()MsgBox WorksheetFunction.CountBlank(Range(Cells(1, 1), Cells(1, 8)))End Sub

VBA ブックを開いたとき自動実行する

ブックを開いたとき、自動実行させるVBAには イベントマクロのWorkbook_Openと通常のAuto_Openがあります。Workbook_Openは、VBE「Microsoft Excel Objects]内の「ThisWorkbook」に記述し、一方、Auto_Openは標準モジュールに記述します。

For 〜NextとCaseの組合せ

繰り返し作業の中で別の場所を参照したい場合 For a = 25 To 37 Step 2 Select Case a Case 25: b = 7 Case 27: b = 11 Case 29: b = 15 Case 31: b = 17 Case 33: b = 19 Case 35: b = 21 Case 37: b = 23 End Select

Replaceの使用例

ユーザーフォームで指定したセルの値がが該当の値の時置き換える Check_Row = Val(Label10)Check_Column = Val(Label11) Sheets(1).Cells(Check_Row, Check_Column).Replace What:="△", Replacement:="▲" Sheets(1).Cells(Check_Row, Check_Column).Replace …

シート内のどのセルが変更されたか記録したい場合(別シートに記録)

以下のイベントマクロを管理したいシートに記述します。 記録用に別シート(例では「書換履歴」シート)を作成します。 '******************************************************** Private Sub Worksheet_Change(ByVal Target As Range)'*****************…

ステムプロット(幹葉表示)・箱ひげ図

幹(ステム)と葉(リーフ)と呼ばれる2つの部分に値をわけて表しヒストグラムに似た図になる。 今日(2020.10.22)現在のパ・リーグ規定打席以上(26名)の打撃成績を見ると 0.355 0.29 0.278 0.259 0.245 0.212 0.344 0.283 0.277 0.258 0.241 0.34 0.282…

VBA 丸付き数字を使う

データ内の数字を①、②・・・や➊、➋・・・Ⅰ、Ⅱ・・・で表示して目立つようにしたい場合、文字として扱うと①、②と順番に変えていくことが面倒です。 そこでUnicodeを使いたいのですがUnicode表は16進数で表示されているのが多く変数として扱うにはハードルが高…

VBA フィルタを操作する

複数の人が操作(読み書き)をするようなファイルをVBAを使うとフィルタがかけられて思わぬエラーに遭遇したり書き込み消し込みが正常に機能しなかったり不具合が発生することがある。 一番シンプルで簡単なものはVBA操作の最初に3行を記入しておけば不具合…

VBA Modを使う(割り算の余りを求める)

10進法で作業が進めにくい場合もあります。意外と使い道があるので覚えてください。 まず、Excelでは 答え「1」のところの数式は、 =MOD(A2,B2) <R1C1参照形式:=MOD(RC[-2],RC[-1]) > 割られる数 割る数 余り 10 3 1 VBAでは下のように記述…

VBA R1C1参照形式からA1参照形式に変換

Excelは通常、A1参照形式で扱うことが多いがそれ以外にA列、B列ではなく列表示も数字のR1C1参照形式がある。 昭和世代にはロータス形式、マルチプラン形式のほうが馴染みやすいが今では通じない死語かも知れない。 VBAでは変数を扱う場合、数字のほうが変数…

VBA 空白(””)を含む数式を入れるときの処理

計算式が無効にならないように空白を考慮した計算式例 1 2 3 4 1 出身県 人数 年俸 平均年俸(万円) 2 岐阜 1 1,800 =IF(RC[-2]<>"",RC[-1]/RC[-2],"") 3 静岡 4 32,770 =IF(RC[-2]<>"",RC[-1]/RC[-2],"") 4 愛知 =IF(RC[-2]<>"",RC[-1]/RC[-2],"") 5 三重 …

VBA DateAdd関数

VBA DateAdd関数 指定した時間間隔を日付に加算してその日付を含む Variant (Date) を返します。 使用例 ・販売予測と在庫数から在庫がなくなる日を予測します。 ・在庫が無くなる予測日から補充発注をする日を割り出します。 DateAdd(interval, number, dat…

VBA データベースの最終行を調べる

Excel VBAを使ってデータベースを集計するとき、レコードの最終行を知る必要がある。 私が最初に覚えたのがCurrentRegionプロパティで、例えば GYO = Sheets("Data").Cells(1, 1).CurrentRegion.Rows.Count Dataシートの1行目からデータが入っているものに…

VBA セルを色塗りする

データの内容に応じてセルの色を変えたい場合、VBAで処理をしなくてもExcelの「条件付き書式」で設定をしておけばいい。とは言えExcelデータで作業をしていると「条件付き書式」ではないほうがいいこともある。そんなときに活用したい。 例えば、VBAでデータ…