約 2,022,097 件
https://w.atwiki.jp/helplife/pages/18.html
https://w.atwiki.jp/toridai_suikou/pages/28.html
空白セルの補完 A2からA4が空白として,A1からA5を選択して「編集」―「フィル」―「連続データの作成」を開き 「データ予測」にチェックを入れて「OK」. 複数のシートをまとめる(指定範囲) Sub matome() Dim LastR As Long, TgtR As Long Dim Sh As Worksheet, TgtSh As Worksheet まとめるシート名はSheet1 Set TgtSh = Sheets("Sheet1") Application.ScreenUpdating = False TgtR = 1 もとのシートのサイトの行をD列で探す TgtR = TgtSh.Range("D65536").End(xlUp).Row + 1 TgtSh.Rows("1 " TgtSh.Range("A65536").End(xlUp).Row).Delete For Each Sh In ThisWorkbook.Worksheets If Sh.Name TgtSh.Name Then With Sh LastR = .Range("A65536").End(xlUp).Row If LastR 1 Then .Rows("1 " LastR).Copy TgtSh.Rows(TgtR) .Rows("10 33").Copy TgtSh.Rows(TgtR) End If End With TgtR = TgtSh.Range("A65536").End(xlUp).Row + 1 End If Next Application.ScreenUpdating = True End Sub 条件付き最大値を求める =MAX(INDEX ( ( C2 C65 200)*C2 C65,))
https://w.atwiki.jp/keiplus/pages/27.html
VisualBasic for Applications Excel、WordなどMicrosoft製のビジネス用アプリOfficeスイートをマクロ操作するための言語がVBAです 次期不明ながらマクロ開発言語にJavaScript実装が予定されています 外部ツール(PyXLL、XLWings)を使えばPythonでの開発も可能です エディタ、実行環境 VisutalBasicEditor(VBE・ALT+F11起動)のみです エディタ(VBE)の使い勝手をカスタマイズ VBAでのコメントアウトは行頭にシングルコーテーション(’)付与 コメントアウトをVBEではコメントブロックと言います コメントブロックはVBEではツールメニューボタンでしか実装されてないため 作成時の簡便性がありません。そこでショートカットを付与します。 コメントブロックのショートカット付与 1.ツールバーオプションから「ユーザ設定」を選択 2.ユーザ設定内のタブ「コマンド」内のボタン「コマンドの配置の変更」を選択 3.「コマンドの配置の変更」からラジオボタン「ツールバー」を選択 4.プルダウンから「編集」を選択 5.コントロール欄「コメントブロック」を選択状態にし、 ボタン「選択したボタンの編集」のプルダウンメニューを開き、 「名前」欄のテキストボックスに「( /)」を末尾に追記 「イメージとテキストを表示」または「テキストのみ表示」にチェックを付ける この後は閉じるを押下してVBEメイン画面に戻ります ・注意点は5.のテキストを表示を選択設定することです。 イメージを表示を選択するとせっかく設定したショートカットが なぜか有効になりません。 ・(&キー)はALT+キーで実行できます。(入力文字は半角) 上述では/を例にしましたが好きなキーを設定できます。 記述 VBAには次の記述方法があります。 sub subprocedure_name(){ } サブプロシージャ―(メイン処理) function function_name(byVal, byRef){ } ファンクション(関数) property (Get/Set/let)property_name list_name as type プロパティー(アクセサ、コンストラクタ) Public/Private/Friend/Static スコープ(Public、Staticは省略可能) クラス VBAのクラスはファイル(cls)を生成することで作成できます (JavaのようなClass~という記述はありません) VBA独自モジュール ワークブック、ワークシート毎にVBAを設置し、開いた時、閉じた時を トリガーにして発動させることができます ユーザフォームモジュールは、入力や表示のモーダルを作成することができます。 ユーザフォームもアクションをトリガーにして動作するプロシージャを切り替えができます。 データベース DB接続は、ライブラリを使用します。 主にADOを使用します。(ほかにRDO、DAOがあります) ライブラリは標準で読み込みされてないため、VBEの「参照設定」で 設定する必要があります 参照設定でチェック印つけるもの Microsoft Active Data Objects x.x Library Microsoft Office xx.x Object Library 2つ目のOffice Object Libraryも設定するのはVBAでADO読込設定 するときに必要なためです。 一般利用者にVBA付きExcelを配布するときは一般利用者に 参照設定を設定してもらう必要がなくなります。 参照設定 主に次のライブラリをおすすめします (必須ではありません。必要時のみ設定で構いません) Microsoft Forms x.x Object Library Microsoft ActiveX Data Objects x.x Library Microsoft Scripting Runtime Microsoft VBScript Regular Expressions x.x Microsoft Office xx.x Object Library テスト OSSであるテスティングツールは以下がある。 VBAUnit http //wiki.c2.com/?VbaUnit VB Lite Unit https //sourceforge.net/projects/vb-lite-unit/ xlUnit https //archive.codeplex.com/?p=xlvbadevtools しかし何れも2014年頃にメンテナンスが止まっており 参考程度にしか使えそうにない。(本当ならMSが率先してやるべき) 次のサイトはテストは自作になるが参考になる良記事 [VBA Functionプロシージャの動作をテストするコード - t-hom’s diary] (https //thom.hateblo.jp/entry/2016/02/28/182648) コーディング規約 MS公式のVBAコーディング規約はありません。 有志の方が例として挙げているので、これを叩き台にして自身や自社・自部署の規約を策定するといいでしょう。 [エクセルVBAコーディングガイドライン【随時更新】] (https //tonari-it.com/excel-vba-coding-guide-line/) [Excel VBAコーディング ガイドライン案 - Qiita] (https //qiita.com/mima_ita/items/8b0eec3b5a81f168822d) [VBA コーディングガイドライン - You.Activate] (http //www.thom.jp/vbainfo/codingguideline.html) 備考 上記でエディタはVBEのみ、と記しました。 有志の方が「Text Scripting on VBA」を作成しGithubで公開されています。 [GitHub - tcsh/text-scripting-vba Modules for text scripting on VBA] (https //github.com/tcsh/text-scripting-vba) [Try #008 – VBAのモダンな開発環境を構築してみた | dayjournal memo] (https //day-journal.com/memo/try-008/) 現在でも利用できるようですが2013年のものでその後のメンテナンス等は 行っておられないようなので、使用時には注意が必要です。 その他 以下はあくまで著者個人の考えです。 VBAは思い立ったらその場で作成し、作成したプロシージャ等はその場でbas、clsファイルとしてエクスポート。 エクスポート時、オブジェクト名を付け忘れないように。 何故エクスポートしておくか?ですが、社内でVBA付きExcelは割と忌み嫌われます。そこでVBAをbas,clsで外だししておくと、xlsx形式Excelでもbas, clsファイルをインポートすればVBAが使え、保存するときはVBA無しで保存すれば通常のxlsx形式で保存できるため、他の方からの苦情を受けずに済みます。 VBAを利用するメリットは自身の作業効率化です。可能な限り上手く利用するのが吉です。 またネットにあるものをそのままコピーして利用する場合、利用規約やライセンス規約に注意が必要です。もし規約の規定が無ければコードの一番上部にURLと作者名をコメントブロックで書いておくことです。 将来実装予定のJavaScriptの詳細は不明です。nodeやwebpackが使えるとなると便利にはなりますがモジュール管理に注意を払う必要がでてきそうです。 なぜそうしてまでExcelを扱う必要があるのか。バグトラッカーや管理ツールは幾らでもあるのに。そう思う人は多いと思う。でも実際の現場はExcel依存から脱却できておらず、また過去資産を使い続けたい場合もあり、嫌がおうにも使わざるを得ない。VBAを使って数々の事務作業を簡素化するにはVBAを使えるようになっておくことは必要。
https://w.atwiki.jp/wakametetactics/pages/129.html
Excel初学者が遊びで作ってみた人狼確率計算表です>< 共有込み四人最終日シミュレータ 4人最終日での勝率は村・共有それぞれの能力によってどれだけの影響を受けるか考えてみました。 各人が狼に投票する確率と票変えする確率を変更することができます。 6人狼狐、指定進行orグレラン進行時不敗率シミュレータ(センサー含む) 6人1狼狐確定生存の時、村は指定進行をするべきなのか、グレラン進行をするべきなのか。 指定進行の方がグレラン進行に比べ3%程度引き分け率が高いが、小さな違いなので好みでいい、という結論でした。 合わせてこちらも読んでいただけると嬉しいです>< Notpad 6人狼狐を考える1 Notpad 6人狼狐を考える2 Notpad 6人狼狐を考える3
https://w.atwiki.jp/kplus/pages/50.html
Excel関数 メニュー リファレンス|スニペット|エラー|[[]] 概要 Microsoft Excel上で計算、文字編集、統計などの処理を行うために用いるコマンド。OpenOffice、Googleドキュメントスプレッドシート、KINGSOFTオフィスでは一部互換性がある。簡単に表計算、文字処理、データ処理が行えるのが特徴だが、条件処理はコマンドが冗長的になり可読性が極めて乏しくなるほか、ルーチン処理は行えないなどの欠点もある。 主なExcel関数利用方法 結果NGの場合はパラメータ、プロパティーを変更して試してみて下さい。Excel2003までとExcel2007以降ではファイル拡張子が異なります。ファイル名やシート名取得の関数式は、関数を実行させるファイルを保存した後でないと正しく動作しません。 ・ファイル名を取得 Excel2003まで MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND(".xls]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1) Excel2007以降 MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND(".xlsx]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1) ・シート名を取得 Excel2003まで MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,FIND(".xls]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1) Excel2007以降 MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,FIND(".xlsx]",CELL("filename",A1))) ・データを関数の引数で利用する場合 INDIRECT(A3 "!D D") ・15分単位 MROUND MROUND(数値, 倍数) (注)Excel2003では分析ツールにチェックを入れておく必要がある。 ・範囲名を利用した、IF(vlookup(indirect()))の応用 IF(B15="","",VLOOKUP(B15,INDIRECT(A15),4,FALSE))
https://w.atwiki.jp/yamajiyuta/pages/16.html
VBA(Visual Basic for Applications) マクロとは、アプリケエーションソフトの操作を自動化するための機能である。 シートやフォームに関連しないコードを標準モジュールという。 メッセージボックスを表示する。 Sub Message() MsgBox "Hello World!" End Sub SubとEnd Subの間に記述したコードのかたまりをプロシージャという。 ステートメントを次の行に続ける場合は、改行の前に「 _」(半角スペースとアンダーバー)を記述する。 コメントは「 」(シングルクォーテーション)を使って記述する。 変数の宣言 Integer型(整数)の変数aを宣言する。 Dim a As Integer 文字列型 文字列はStringというデータ型に格納する。 Dim fruit As String fruit = "りんご" 定数 定数はConstを使って定義する。 Const PI As Integer = 3.14 定数に値を代入することはできない。 特殊文字 vbCr 改行 vbTab タブ vbBack バックスペース vbNullChar NULL文字 配列 配列の宣言 Dim a(1 To 4) As Integer または、 Dim a(3) As Integer 配列の要素の参照と代入 a(0) = 1 MsgBox a(0) MsgBox関数 MsgBox (prompt[, buttons][,title][, helpfile, context]) Buttonsには、vbOKOnly、vbOKCancel、vbYesNo、vbYesNoCancelなどを指定できる。 プロシージャ Subプロシージャは戻り値がない。 SubステートメントとEnd Subステートメントを使って定義する。 引数のあるプロシージャは以下のように定義する。 Sub A(str As String) MsgBox str End Sub Functionプロシージャは戻り値がある。 FunctionステートメントとEnd Functionステートメントを使って定義する。 Function A() aaa = "Hello" End Function プロシージャの呼び出しにはCallステートメントを用いる。 Call A 引数を渡して呼び出す場合 Call A("引数1") 変数のスコープ プロシージャ内で宣言した変数は、宣言したプロシージャ内でのみ有効である。 モジュールの先頭で宣言した変数は、モジュール内で有効である。 バリアント型 宣言せずに使用した変数のデータ型をバリアント型(Variant)という。 バリアント型のサイズは16バイトである。 モジュールの先頭で次のように記述すると、宣言していない変数を使用できないようにできる。 Option Explicit 文字列連結演算子 MsgBox "2010" "年" ""IF~Thenステートメント If 条件 Then 処理1 ElseIf 条件2 Then 処理2 ElseIf 条件3 Then 処理3 Else 処理4 End If ""Select Caseステートメント Select Case 式 Case 値1 処理1 Case 値2 処理2 Case Else 処理n End Select 値の指定方法 Case 4,5,6 Case 2 To 5 // 範囲指定 比較演算子の使用 Case Is 10 For~Nextステートメント Dim i As Integer For i = 0 To 3 処理 Next 増分の指定 Dim i As Integer For i = 2 To 30 Step 3 処理 Next For Each ~Nextステートメント あるオブジェクトの集まりに対して、その中のすべての要素に対して処理を行う。 Dim ws As WorkSheet For Each ws In WorkSheets 処理 Next Do~Loopステートメント Do While~Loopステートメント 処理の前に条件を評価する。 Do While 条件 処理 Loop Do ~Loop Whileステートメント 処理の後に条件を評価する(必ず1度処理を実行する)。 Do 処理 Loop While 条件 ある条件が成立するまで繰り返しを実行するには、Untilを使用する。 Do Until~Loopステートメント 処理の前に条件を評価する。 Do Until 条件 処理 Loop Do ~Loop Untilステートメント 処理の後に条件を評価する(必ず1度処理を実行する)。 Do 処理 Loop Until 条件 Exitステートメント Exit For Exit Do 無限ループ [Ctrl] + [Break]で中断可能 オブジェクト 操作の対象となる、Excelのワークブックやワークシートをオブジェクトという。 また同じ種類のオブジェクトをひとまとめにしたものをコレクションという。 オブジェクトはObject型の変数に代入できる。 Setステートメントで変数とオブジェクトを関連付ける。 Dim obj As Object Set obj = Application 変数とオブジェクトの関連付けを無効にする場合は、Nothingキーワードを使用する。 Set obj = Nothing プロパティ プロパティとは、オブジェクトの状態や属性のことである。 参照 Dim cnt As Integer cnt = ThisWorkbook.Worksheeets.Count メソッド メソッドとは、オブジェクトを操作したり、動作させるインターフェースである。 ワークブックBook2をアクティブにする。 Workbooks("Book2").Activate 例 A1 A3にHelloを記入する。 Sub SheetActivate Sheet3.Activate ActiveSheet.Range("A1 A3").Select Selection.Value = "Hello" End Sub ワークブックBook1を、保存せずに閉じる。 WorkBooks("Book1").Close False 2番目のワークシートの次に、ワークシートを1つ追加する。 Worksheets.Add After =Worksheets(2), Count =1 ユーザーフォームの操作 ユーザーフォームを表示する Load UserForm1 UserForm1.Show ユーザーフォームを閉じる Unload UserForm1 セルの参照 1つのセルを参照するには、CellsプロパティまたはRangeプロパティを使用する。 A1セルに10を代入する。 Cells(1,1).Value = 10 Range("A1").Value = 10 セル範囲の参照 Range("A1","B2").Select アクティブセルの参照 MsgBox ActiveCell.Value VBAで数式を取得・設定するにはFormulaプロパティを使用する。 Cells(1,1).Formula= "=1+1" セルの表示形式 NumberFormatプロパティを使用する。 日付 ActiveCell.Value = "2010/5/5" ActiveCell.NumberFormat = "yyyy年m月d日" 通貨 ActiveCell.Value = "1000" ActiveCell.NumberFormat = "\\#,##0" 桁数指定 ActiveCell.Value = "10" ActiveCell.NumberFormat = "0.00" 文字の色 Cells(1,1).Value = "AAAAA" Cells(1,1).Font.Color = RGB(255,0,0) 文字の大きさ Cells(1,1).Value = "AAAAA" Cells(1,1).Font.Size = 8 罫線 ActiveCell.Borders.LineStyle = xlContinuous 他には、xlDash、xlDoubleなど セルの塗りつぶし ActiveCell.Interior.Color = RGB(200,200,200)
https://w.atwiki.jp/kojiro/pages/78.html
セルの書式、位置、内容についての情報 CELL(検査の種類,対象範囲) 検査の種類 下記の文字列を""で囲って指定します。 検査の種類 結果 address 対象範囲の左上のセルの参照を表す文字列 col 対象範囲の左上のセルの列番号 color 負の数を色で表す書式が設定されていたら1、そうでなければ0 contents 対象範囲の左上のセルの内容 filename 対象範囲の左上のセルのファイル名。保存されていなければ"" format セルの表示形式を示す文字列定数(下表)。さらに負の数を色で表す書式の場合は文字列の最後に-、正の数または全ての数を括弧で囲む書式が設定されていた場合は文字列の最後に()がつく parentheses 正の数または全ての数を括弧で囲む書式が設定されていたら1、そうでなければ0 prefix 文字列の配置に対応する文字列定数。左詰・均等配置の時は 、右詰の時は"、中央揃えの時は^、繰り返し配置の時は\、文字列以外・空白の時は"" protect ロックされていれば1、いなければ0 row 対象範囲の左上のセルの行番号 type データのタイプに対応する文字列定数。空白の時はb、文字列定数の時はl(エル)、その他の値の時はv width 小数点以下を切り捨てたセルの幅。セル幅の単位は標準のフォントサイズの1 文字に等しい Excelの表示形式 戻り値 G/標準 G 0 F0 0.00 F2 #,##0か#,##0;-#,##0か$#,##0_);($#,##0) ,0 #,##0.00か#,##0.00;-#,##0.00か$#,##0.00_);($#,##0.00) ,2 #,##0;[赤]-#,##0か$#,##0_);[赤]($#,##0) ,0- #,##0.00;[赤]-#,##0.00か$#,##0.00_);[赤]($#,##0.00) ,2- \#,##0;\-#,##0 C0 \#,##0;[赤]\-#,##0 C0- \#,##0.00;\-#,##0.00 C2 \#,##0.00;[赤]\-#,##0.00 C2- 0% P0 0.00% P2 0.00E+00 S0 # ?/?か# ??/?? G ge.m.dかgggg"年"m"月"d"日" D4 yyyy/m/dかyyyy"年"m"月"d"日"かm/d/yyかd-mmm-yyかyyyy/m/d h mm D1 d-mmm D3 mmm-yy D2 h mm AM/PM D7 h mm ss AM/PM D6 h mmかh"時"mm"分" D9 h mm ssかh"時"mm"分"ss"秒" D8 対象範囲 情報が必要なセルの範囲。 省略すると最後に変更されたセル。 例 =cell("contents")=最後に変更されたセル
https://w.atwiki.jp/guttari/pages/69.html
テストページ エクセルからの貼り付けテスト。 WikiSupportAddinというものを使用。 Excelの表をコピペ感覚で貼り付けられます。 zod 名前 補足 効果 プロテスV メリットポイント1段階 防+60 プロテスV メリットポイント2段階 防+62 プロテスV メリットポイント3段階 防+64 プロテスV メリットポイント4段階 防+66 プロテスV メリットポイント5段階 防+68 シェルV メリットポイント1段階 被魔法ダメージ-24.2% シェルV メリットポイント2段階 被魔法ダメージ-24.6% シェルV メリットポイント3段階 被魔法ダメージ-25% シェルV メリットポイント4段階 被魔法ダメージ-25.3% シェルV メリットポイント5段階 被魔法ダメージ-25.7%
https://w.atwiki.jp/axeeffect/pages/18.html
---- セル本文中に、計算結果を入力可能 ="hoge" SUM(H49,H60) ---- セルにページ番号を挿入 (1)CTRL+F3を押す。 名前をDirection 参照範囲を=GET.DOCUMENT(61)+NOW()*0 と入力 (2)引き続き、項目を2つ追加 「名前」=VPage、「参照範囲」=GET.DOCUMENT(64)+NOW()*0 「名前」=HPage、「参照範囲」=GET.DOCUMENT(65)+NOW()*0 (3)ページ数のほしいセルのセルに =IF(Direction=1,ROWS(VPage)*IF(COLUMN() INDEX(HPage,1),0,MATCH(COLUMN(),HPage))+IF(ROW() INDEX(VPage,1),0,MATCH(ROW(),VPage))+1,IF(ROW() INDEX(VPage,1),0,MATCH(ROW(),VPage))*COLUMNS(HPage)+IF(COLUMN() INDEX(HPage,1),0,MATCH(COLUMN(),HPage))+1) で、ページ番号が表示されます。ctrl+shift+enterで確定する。 ---- ---- ---- ----
https://w.atwiki.jp/kane2008/pages/29.html
Excelでのヘッダーとフッターの付け方 ファイル→ページ設定→ヘッダー/フッター Excel2007の場合 挿入タブ→テキストグループ