絞り込み条件を変更する
検索条件を絞り込む
有料ブログの投稿方法はこちら

すべてのカテゴリ

144 件中 1 - 60 件表示
カバー画像

Excel VBAでふるさと納税の返礼品の価値を最大化してみよう!

はじめにこんにちは、バタフライ・栗田です。唐突ですが、みなさんはふるさと納税をやっていますでしょうか。ふるさと納税は、地方自治体への寄付を通じて、その地域の発展に貢献する制度です。寄付者には、その地域の特産品などの返礼品が贈られます。ご存知の方も多いと思いますが、収入や家族構成により、おおよそ寄附金額の目安が決まっています。そのような上限がある中で、数々の返礼品の中から、価値の高いものを選ぶのは、意外と難しいものです。このブログ記事では、Excel VBAを活用して、ふるさと納税の返礼品の中から、最大の価値を持つものを見つけ出す方法について紹介します。前準備まず、"ふるさと納税還元率ランキングベスト300"のようなサイトで適当にいいなーと思う返礼品の寄付金額と市場価値をスプレッドシートにまとめます。こんな感じで商品と寄付金額、還元率が載っています。このサイトを元に寄附金額 x 還元率を市場価値として以下のようなスプレッドシートを作成してみました。今回は20個までとしました。VBAで返礼品の価値を最大化する上の表を見ればわかる通り、返礼品の値段は様々です。今回は20個のリストですが、それだけでも選び方は100万通り以上あります。各商品について選ぶ・選ばないの2通りあるので、2の20乗。1,048,576通りとなります。つまり、価値を最大化する最適解を選ぶのは、人力では非常に難しいことがわかります。非常に多い計算に思えます。しかし、VBAのようなプログラムを使えば高速で終わらせることができます。このようなケースでは競技プログラマーの間で"bit全探索"と呼ばれる手法を用いることで解
0
カバー画像

Excel VBAで迷路の最短経路を調べよう!

はじめにExcel VBAは、主にビジネスの現場で利用されるプログラミング環境ですが、その柔軟性により、幅広い用途に使用することが可能です。Excel VBAを使うと何千何万回という計算を瞬時に行うことができます。今回のブログ記事ではプログラムを使うとどんな計算が一瞬でできるのか?ということを簡単にお伝えしたいと思います。迷路探索をする以上のような迷路を用意してみました。黒く塗られている箇所は移動できません。そのような制約のなかで、上下左右に移動を繰りかえして、SからGのマスまで最短何手でいけるでしょうか?愚直に全ての経路を試す、ということが思いつきますが、それぞれのマスでの選択肢が、来た道を除いて最大で3つあります。その×3の選択肢を繰り返すので、膨大な場合の数になることが想定されます。アルゴリズムを使うと簡単に考えられるこれは競技プログラマーの間では「幅優先探索」を用いて解けるということで、有名な問題です。以下のようなアルゴリズム(手続き)を使って解くことができます。それは、スタート地点から行けるマスに1を書きこみ、そこから行ける場所に2を書きこみ…というように近い所から数字を埋めていくことです。このように表を更新していくことで、最短経路を調べることができます。とはいえ、表を一つ一つ埋めるのも大変です。そこでVBAのようなプログラムを使うとこの作業を一瞬で終わらせることが可能です。マクロを走らせると16回でたどり着けることが分かりました。プログラム化の素晴らしいことは、一度作成してしまえば同じような作業を行わなくてもよくなるところです。今回はたかだか9x9の迷路でした。しか
0
カバー画像

【Excel VBA】ファイル名変更マクロ▽ソースコード

《操作》 (1)メニューの開発→マクロから、「Aフォルダー指定マクロ」を選択して実行。ファイル名を変更したいフォルダーを選択します。 図1図2(2)メニューの開発→マクロから、「Bファイル名検索マクロ」を選択して実行。指定したフォルダーのファイル名をC列に取り込みます。 図3(3)変更したいファイル名をD列「変更ファイル名(入力)」に手入力します。その時、セルが空欄であれば、ファイル名は変更されません。また、D列に入力するデータは数式があっても構いません。ちなみに、図4は、[="SAMP" & TEXT(ROW()-2,"000") & ".txt"]と入力しています。 図4(4)メニューの開発→マクロから、「Cファイル名変更マクロ」を選択して実行。正常にファイル名が変更されると、変更処理結果に[〇]が付きます。ファイル名が不正であったり、すでにあるファイル名を指定して、ファイル名が正常に変更されないと[×]が付きます。 図5Option Explicit Option Base 0 ' Const FLDRCELL = "C1"        'フォルダー格納セル Const FILTERSS = "*.*"        'ファイル名検索フィルター Const FLSTFROW = 3           '検索ファイル名格納先頭行 Const FLSTFCOL = 3            '検索ファイル名格納カラム Const NLSTFCOL = 4            '新規ファイル名格納カラム Const MARKFCOL = 5     
0
カバー画像

WindowsとMacでのExcelの機能の違いについて(VBA編)

Excel2016からライセンス条項の変更により、Office365と同様に1ライセンスでWindowsとMac両方にインストールできるようになりました。表計算としての機能では両OSで高い互換性を持つExcelですが、一部操作が違ったりします。特にVBA関連では大きな違いがまだ存在しています。ココナラではExcel関連の出品や公開案件が多く見られる中で「Excel for Macは対応不可です。」という文面を見たこともある筈です。ここではその違いをVBAをメインに述べていきたいと思います。Excel for MacでのVBAの違いは昔から有名でしたが、ここ最近はかなり近い操作感になりつつあります。ただし、結構な違いは残ったままです。1. VBEで日本語を入力するとキャレットがずれる2. WindowsObject系は使用不可3. 代替のAppleScript・JXAが意図しない挙動をする4. ファイル操作は明示的な権限譲渡が必要5. 日本語のあるパスでは不具合が発生する6. SaveAsコードではUTF-8形式のCSVファイルは出力できない7. ユーザーフォームは作成・編集不可8. OS判定が複雑になってしまう9. 画像関連ではPNGファイルが使用可能1. VBEで日本語を入力するとキャレットがずれるVBAがはじめて実装されたExcel2011 for Macからある問題でした。日本語入力(正確にはマルチバイト文字)には癖がある中でキャレットがずれるというオマケが付いてきます。このオマケはVBEのフォント設定をMSGothicのような等幅フォントを設定することで解消できます。2
0
カバー画像

VBAによるExcel業務の自動化:効率と生産性の向上

はじめにExcelはビジネスの世界で広く使用されているツールですが、VBA(Visual Basic for Applications)を使用することで、これらの作業を自動化し、効率を大幅に向上させることができます。この記事では、VBAを用いたExcel業務の自動化事例を紹介し、そのメリットと実装方法について解説します。VBAとは?VBAは、Microsoft Office製品をプログラミングによって制御するための言語です。Excel内のデータ処理、計算、チャート作成など、繰り返し行う作業を自動化するために広く使用されています。自動化事例1: 日報作成の自動化多くの企業では日報の作成が日常的な業務です。VBAを使用すると、特定のフォーマットに沿った日報を自動で作成し、必要なデータを挿入することができます。実装方法テンプレートの作成: 日報の基本的なフォーマットをExcelに作成します。データ入力自動化: VBAを使用して、日々のデータを自動的に日報テンプレートに入力します。レポートの生成: 完成した日報をPDF形式で自動保存するマクロを設定します。自動化事例2: 財務データの分析財務データの分析は複雑で時間がかかる作業ですが、VBAを使うことで、データの収集から分析、レポートの作成までを自動化できます。実装方法データ収集: VBAを用いて、外部データベースから必要な財務データをExcelに自動的にインポートします。データ処理: 財務データを分析用に整形し、計算を行います。レポート作成: 分析結果を基に、自動的にグラフや表を作成し、レポートとして出力します。まとめVBAを用いるこ
0
カバー画像

Excelの限界

Accessで介護支援記録管理システムを作った理由-3前回の続きです。 データベースを基本とするシステムををExcelで作りたいとき、操作の効率性などを向上させたい場合は、フォームやVBAを使ったほうが良いでしょうか。 私の経験では、テーブルに格納されるデータ(レコード)件数が少なく、あるいはデータを構成する項目(フィールド)数が少ないときは、直接テーブルを操作するか、関数を使って抽出したほうが効率的と思っています。 しかし、レコードの件数が数千、数万単位となり、しかもフィールド数が多い場合、さらに、フィールド数が少ない場合でも入力されるデータの内容が多岐にわたっている場合は違ってきます。 まず、レコード件数が多くなれば多くなるほど、自然と検索や抽出を行う操作が増えていきます。 さらに、例えば売上データから、品目別に売上高を計算しようとすると、品目数が多ければ、自分でフィルター条件を設定するだけで手間がかかります。 一方、関数でデータを抽出しようとする場合でも、調べたい品目数が増えるにつれて関数が複雑化し、計算用のワークシートも増えて、結果を表示する目的のシートが探しにくくなります。この点は、前回のブログでも触れました。 従って、この場合、ExcelのユーザーフォームやVBAを使ったほうが効率的、と言えるのでしょうか。 私は、このレベルになってくると、Excelでデータベースを操作しようとすること自体に意義を見出しにくくなる、と考えています。 Excelは極めて優秀なソフトです。 データベースまで扱える充実した機能性と、何より様々な姿に変わるワークシートという自由さを備えている
0
カバー画像

Excel VBAのスクレイピングでデータ抽出を簡単に!【イメージ動画あり】

こんにちは、あやせです!私はココナラでExcelやVBAを活用した効率化サービスを提供しています。今回は、Excel VBAのスクレイピングを使用して、データ抽出する事例について紹介します。この方法で、どれだけ簡単にデータ抽出できるかをお伝えします。 スクレイピングでできることExcel VBAを使ったスクレイピングは、情報収集を簡単かつ迅速に行うための素晴らしい手段です。以下は、スクレイピングでできることの一部です。 データの収集: Excel VBAを活用することで、様々なサイトから必要な情報を自動的に収集できます。 定期的な更新: 定期的に情報を更新することで、最新の情報を常に手に入れることができます。 カスタマイズ可能なレポート: 抽出した情報をカスタマイズ可能なレポートにまとめ、分析しやすくします。 デモ動画: 不動産情報のスクレイピング動画では、実際にExcel VBAを使用して不動産情報をスクレイピングするプロセスを紹介しています。ぜひご覧ください! スクレイピングのメリット主に以下2つのメリットがあります。時間の節約: 手作業で情報を収集する手間を省き、時間を有効活用できます。 人的ミスの削減: 人為的なミスがなく、抽出されるデータは高い正確性を保ちます。 私の提供するサービス 私もExcel VBAを駆使したスクレイピングサービスを提供しています。あなたのやりたいことが整理できていなくても、私からご提案させて頂きます!情報抽出をお考えの方は、ぜひ一度ご相談ください。https://coconala.com/services/3078591まとめ Excel V
0
カバー画像

ExcelVBAの処理速度

Excelの処理速度って遅いなぁと思うことがありませんか。それはもしかするとパソコンの性能じゃないかもしれません。Excelって意外と軽いアプリケーションで、比較的低スペックのマシンでも快適に動くようにできています。それはユーザが作ったVBAも同様です。Excelで特に重い処理トップ3は①グラフィックの描画、②再計算、③セルの書き込み、これらはとても重くなります。連続で行うと一気に処理速度が低下する原因になります。それぞれ解決策はあって、基本的なことで行くと、①に関してはApplication.ScreenUpdatingをオフにすること、②に関しては自動再計算をオフにしたり、計算済みの値をセルに書き込むこと、③に関しては配列に値を設定しておいてまとめて書き込むことなどで処理時間を短縮できます。私の作成するマクロは高速処理が効率に直結する現場で実用されている物ですので、この基本は必ずクリアしている物を提供しております。マクロを作る側、作ってもらう側、双方が満足するマクロの要因の一つに処理速度はあると思いますので、皆さんに気にしていただきたいなと思います。
0
カバー画像

ソースコードはかく語りき

最近の言い方で言うと、・君のソースコードがささやいている・ソースコードは君に語りかけるとかでしょうか。画像は、Image Creator 提供 DALL·E 3です。ExcelVBAやGAS(Google Apps Script)の作成支援、修正などを行っていますと、これまで使っていて、動かなくなったものや、今はもう使われなくなったコードを目にすることがよくあります。今でこそ機能していませんが、かつては動いていた。もしくは動かそうと努力した後が垣間見えます。・ああ、これは令和対応をしたんだな・祝日対応しようとして諦めたんだな・あと一歩なんだけどなかつてこのファイルに触れたことのある人が、努力し、研鑽し、切磋琢磨した後が痕跡として残っています。多分消しても動作に影響はないんだけど、いつか使うかもしれないから残しておくか。そういう気持ちで今に至るコードたちです。こういうところから新しいアイディアが生まれたり勉強になることも少なくないので、私も無駄だからとバッサリ切らずに残しておくことが多いです。そして、本当にまれにですが、なぜか変更すると思うとおりに動作しなくなる箇所があったりします。どう考えても使われていないように見えて、実際には使われているケース。神社やお寺、お地蔵さまや鳥居みたいですね。最近はAIもコードを作成しますので、それも残すともうごちゃごちゃして本当に読める人でないとメンテナンスもできない状態に。ソースコードをAIに渡してきれいにしてくれる時代も来ますかね。
0
カバー画像

インボイス制度対応

こんにちは。23年8月現在、毎日酷暑かつゲリラ豪雨に見舞われたりしていますが、皆さまご安全でしょうか?さて、ココナラがインボイス制度対応とのことで、BUTTONCARNIVALの対応についてアナウンスさせていただきます。BUTTONCARNIVALは、個人事業で活動しておりますが「適格請求書発行事業者」として登録しております。ココナラシステムがインボイス対応しましたら、順次手続きいたしますので、インボイス制度対応が不安な方は、ご安心の上、お気軽にお問い合わせください。サービス項目が無い場合でも、ご相談内容によっては、お引き受け可能な場合があります。ぜひお困りごとございましたら、お声がけいただければと思います。引き続きBUTTONCARNIVALを宜しくお願いします♪
0
カバー画像

【Access備忘録】データをExcelに出力すると書式が変わる件【未解決事件】

AccessからExcelにデータを吐き出すと一部セルの書式がおかしなことになります。こんな感じで日付になったり。あれこれ試してわかったのは、どうも過去の思い出(書式)が蘇るようなのですね。書式が変わるのは常に同じセル。Excelのマクロで起動時に関係ないシートをひらくよう指定したり、Microsoftの言うとおり書式をユーザー指定にしてみたりしましたがまるで効果なし。いまのところ対策はこれくらいです。Excelに出力したあとブックをひらく際、当該シートがまず表示されると当該シートの書式が変わるらしい。↓当該シートではないシートに移動してからExcelを閉じる。その後同Excelに出力するとどういうわけか書式は変わらない。でもお客さんに「Excelを閉じるときは必ずこのシートに移動してからでお願い」とは言えないですよね。なので出力先Excelを作成する際は書式をいじらずに。なんとも文系的な解決策なことで笑。
0
カバー画像

VBA×○○○の魅力

VBAは主にOffice系(ExcelやPowerPoint)を自動化する言語であり、Office以外の自動化となると極端にできることが少なくなります。しかしそんなVBAでも別の何らかと連携させることでできることの幅が大きく広がります。ここではそんなVBAと連携させることで機能が拡張できる"別の何らか"をいくつかご紹介します。Windows APIWindows APIとは簡単にいえばWindowsに用意されている機能がまとまっているセットのようなもので、VBAからそれらを呼び出すことでWindowsに用意されている様々な機能を使用することができます。これら機能はほとんどの場合、VBAだけでは実現できないものばかりですVBAではWindowAPIを呼び出すための定型文、いわゆる"おまじない"をコード上に記載するだけすぐに呼び出すことが可能です。ウィンドウを操作(サイズ変更、透明化など)したり、クリップボードを操作したり、マウスやキーボードの制御、画像や図形の描画などのようなVBAでは実現できない非常に多くの操作を可能にしてくれます。ポインタやメモリといったC++言語寄りの考えが出てきたり、外部アプリケーションに影響を与える関数なども存在するためある程度の知識を付けておく必要があります。自作DLL (Dynamic Linking Library)WindowsAPIはWindowsに標準装備されているDLLファイル内にある関数を呼び出しているだけなのですが、DLLファイルは自作することも可能です。たとえば自作DLL内で画像処理が得意なOpenCVを使った顔認識の関数を作成すれば
0
カバー画像

ExcelでOutlookメールの一括送信

メールを一括送信するマクロを作成したのでご紹介します。シート1に送信先一覧aaa様からzzz様まで全員にメールを作成します。zzz様以降を増やしてもOKです。シート2にメール本文[会社名] [氏名]という文字が自動で送信先一覧から読み込まれ、書き換えられる。例えばaaa様向けのメールには aaa(株)aaa様という文字になる。送信前プレビュー表示ボタンを押すと、メール送信前のプレビューが表示される。aaa様からzzz様までの文章を書き替えられたメールがそれぞれ作成されました。(消すのちょっと大変でした。笑)こちらのマクロはそのままでよければ1500円で販売します。カスタマイズが必要な方は別途料金頂ければ作成させて頂きます。試してみたい方、無料で体験版をお渡ししますのでメッセージよりお待ちしております。「PC版 Outlookアプリ必須です。」
0
カバー画像

【Excel VBA】順次流れ図描画マクロ▽ソースコード

A列の文字列を流れ図に挿入手動で位置移動      処理ボックスのサイズは、行幅、列幅で変えれます。                 (その際は、再実行要)Option Explicit Option Base 0 ' Public Sub 順次流れ図描画マクロ()     Const FCDLFTCL = 4            '流れ図左端桁番号     Const FCDTOPRW = 2          '流れ図上端行番号     Const FCDWIDCL = 2           '流れ図幅桁数     Const FCPHEIRW = 2           '流れ図高さ行数(処理)     Const FCTHEIRW = 1           '流れ図高さ行数(端子)     '     Const FCDSPCRW = 2          '流れ図間隔行数     '     '挿入テキスト文字格納セル     Const FCCMTCOL = 1 '桁番号     Const FCCMTROW = 2 '先頭行番号     '     '挿入テキストフォント     Const FCCFNTNA = "MS ゴシック"     Const FCCFNTSZ = 16     '     '線の太さ     Const FCDWLNWT = 1     '     Const FCDWLNCL = vbBlack            '線色     Const FCDWFLCL = vbWhite           '塗りつぶし色    
0
カバー画像

しばらくぶりですが、pythonのコードの総括中です。

pythonコードを単独で利用するコードをいろいろと学んできました。seleniumを利用したウェブスクレイピング、openpyxlを活用したExcelデータの活用などなど。単独で利用する分にはいいのですが、まとめてアプリケーション化することで、誰でもどこでも活用することができます。標準モジュールである、『tkinter』(てぃきんたー)を活用することで、webアプリケーションの開発もpythonにて開発でき、単独で活用していたコードをまとめていっています。さらに、Excelデータ内にVBAを作成し、webアプリケーションからマクロの操作、データ処理も可能です。外部モジュールの扱いに慣れてきたので、ぼちぼちと紹介していきます。
0
カバー画像

ChatGPT × Excel 簡単なゲームを作って

chatGPT に簡単なゲームを作ってもらった結果、、、、、意外とハマるゲームのプログラムを教えてくれました。これは、ヒントをもらって改良してゲームとして販売するのも良いかもしれませんねゲーム説明:このゲームでは、プログラムが1から100の範囲内のランダムな数値を選択し、ユーザーがその数値を当てることを目的としています。ユーザーが入力した数値が正解よりも小さい場合は「Too low!」、大きい場合は「Too high!」というメッセージが表示されます。正解を当てた場合は「Congratulations!」というメッセージが表示され、ゲームが終了します。また、正解を当てるまでの回数も表示されます。Sub GuessNumberGame()     ' ゲームの初期化     Randomize     Dim answer As Integer     answer = Int(Rnd * 100) + 1     Dim guess As Integer     Dim tries As Integer     tries = 0     ' ゲームのループを開始     Do While True         ' ユーザーからの入力を受け取る         guess = InputBox("Guess a number between 1 and 100:")         tries = tries + 1         ' 入力された数値をチェックする         If guess = answer Then             MsgBox "Con
0
カバー画像

chatGPT × Excel セル内容を喋らせる方法を聞いてみた

chatGPTにExcelに入力したセルを喋らせる方法について尋ねてみた結果面白いことができましたので、共有します。質問した内容は、「Excel VBAで面白く音声を読み上げさせる方法」を教えてとしました。結果として、以下のようなコードが返ってきました。やはりコードの作成が速いですね。ちなみにこのspeak機能2012年頃から搭載されたようですね。何か命令文の終わりを音声で知らせたり、意外と使い道がある方法かなと思いました。Sub SpeakText(text As String)     Dim speaker As SpVoice     Set speaker = New SpVoice     speaker.Speak text End Sub Sub Test()     SpeakText "こんにちは、私はExcel VBAです。" End Sub
0
カバー画像

ExcelVBAを使って簡単!顧客情報自動登録ツールの作成方法

ExcelVBAを活用した業務の自動化は、多くの企業で取り入れられています。今回は、ExcelVBAを使った顧客情報自動登録ツールの作成方法を紹介します。 ExcelVBAを使用して、Excelファイル内の顧客情報を自動的に登録するツールを作成します。このツールは、Excelファイルに登録されている顧客情報を自動的に取り込み、データベースに登録することができます。これにより、手作業での登録作業を大幅に削減することができ、業務の効率化に繋がります。 まず、Excelファイルに登録されている顧客情報を自動的に取り込むためには、ExcelVBAの「ADO」(ActiveX Data Objects)というライブラリを使用します。このライブラリを使うことで、Excelファイル内のテーブルやデータベースに接続することができます。 ExcelVBAでADOライブラリを使用するためには、以下の手順を行います。 ①Excelファイルに「Microsoft ActiveX Data Objects」を参照する ②ADOの接続オブジェクトを作成する ③SQL文を作成し、ADOのRecordsetオブジェクトを作成する ④Recordsetオブジェクトに取り込んだデータをデータベースに登録する 以上の手順で、Excelファイル内の顧客情報を自動的に登録するツールを作成することができます。このツールは、顧客情報の他にも、商品情報や注文情報など、さまざまなデータを登録することができます。 ExcelVBAを使った顧客情報自動登録ツールを作成する際には、以下のポイントに注意する必要があります。 ・ファイル
0
カバー画像

ExcelVBAで業務の自動化!営業日報作成ツールの開発方法

Excelは業務で欠かせないツールの1つですが、毎日同じ作業を繰り返していると、時間がかかってしまったりミスが発生したりすることがあります。こういった作業を効率化し、ミスを減らすためにExcelVBAを使って自動化する方法を紹介します。具体的には、営業日報作成ツールを開発する方法を解説します。 ①必要な情報の洗い出しまずは、営業日報の作成に必要な情報を洗い出しましょう。営業日報には、日付、顧客名、担当者、商談内容、次回アクションなどの情報が必要です。これらの情報をExcelに入力することで、自動的に日報を作成することができます。 ②プログラミング次に、ExcelVBAを使ってプログラムを作成します。まずは、Excelの開発タブからVBAエディタを起動し、新しいモジュールを作成します。次に、必要な変数を定義し、営業日報の作成に必要な情報を取得するコードを記述します。例えば、日付を取得するには、以下のようなコードを記述します。また、顧客名や商談内容などの情報を取得するために、データ入力用のユーザーフォームを作成することもできます。ユーザーフォームを作成することで、入力する情報をわかりやすくし、入力ミスを減らすことができます。 ③テンプレートの作成次に、日報を作成するためのテンプレートを作成します。Excelのシートに、日報の書式を設定し、必要な数だけ行を追加します。そして、先ほど作成したプログラムから、日報の各項目に必要な情報を書き込むようにコードを記述します。 ④UI(ユーザーインターフェース)の作成最後に、プログラムを実行するためのボタンを作成します。Excelの開発タブからフ
0
カバー画像

【Excel VBA】市松模様セル作成マクロ▽ソースコード

Option Explicit Option Base 0 ' Public Sub 市松模様セル作成マクロ()     Const GRIDCOLS = 6         '*桁数     Const GRIDROWS = 10      '*行数     '     Const GRIDCOL1 = 26       '*セル背景色1     Const GRIDCOL2 = 38       '*セル背景色2     '---------------------------------------------------------------------------     Dim Ip As Integer, Jp As Integer   '     ActiveSheet.Cells.Clear     '全セル消去     '    For Jp = 1 To GRIDROWS         For Ip = 1 To GRIDCOLS            If ((Jp + Ip) Mod 2) = 0 Then               ActiveSheet.Cells(Jp, Ip).Interior.ColorIndex = GRIDCOL1            Else               ActiveSheet.Cells(Jp, Ip).Interior.ColorIndex = GRIDCOL2            End If         Next Ip     Next Jp End Sub
0
カバー画像

Excel VBAとWebスクレイピングを組み合わせた自動データ収集・レポート作成の効率化

はじめに 近年、データ分析や情報収集が企業のビジネス戦略において重要な役割を果たしています。特に、Web上からデータを取得し、Excelで解析することは日常業務の一部となっています。しかし、データの取得や解析に手作業を要することは効率が悪く、時間の無駄です。そこで、Excel VBAとWebスクレイピングを組み合わせた自動データ収集・レポート作成の効率化を解説します。目次 1.Webスクレイピングとは 2.Excel VBAとWebスクレイピングの基本 3.データ収集の自動化 4.レポート作成の自動化 5.実践例 6.まとめ Webスクレイピングとは Webスクレイピングとは、Webサイトから情報を抽出し、構造化されたデータとして保存する技術のことです。HTMLやXML形式で記述されているWebページから、必要なデータを効率的に取得することができます。 【Excel VBAとWebスクレイピングの基本】Excel VBAを使ってWebスクレイピングを行う場合、以下の手順が基本です。 ①Webサイトへアクセスし、HTMLソースコードを取得する。 ②取得したソースコードから必要なデータを抽出する。 ③抽出したデータをExcelシートに書き込む。 データ収集の自動化 ①Excel VBAを使ってWebスクレイピングを行い、データ収集を自動化する方法を紹介します。まず、参照設定で「Microsoft HTML Object Library」と「Microsoft XML, v6.0」を有効にします。↓②次に、Webサイトへアクセスし、HTMLソースコードを取得するVBAコードを作成しま
0
カバー画像

【Excel小ネタ-2】エクセルでパズル作成

 エクセルは、普段ビジネスやデータ分析などの実務に使われることが多いソフトウェアですが、実は、エクセルを使って簡単なパズルゲームを作成することもできます。たとえば、数独やクロスワードパズル、色を使ったパターンマッチングゲームなどが挙げられます。  数独は、9×9のマス目に数字を配置していくゲームです。エクセルで数独を作成する場合、まずはセルに数字を入力します。数字を入力するときには、同じ数字が入力されていないかを条件付き書式でチェックすることができます。また、数字の入力が完了したら、数式を使って行や列、ブロックの合計が正しいかどうかをチェックすることができます。これによって、自動的に数独の答えが導き出されます。  クロスワードパズルは、縦と横に単語を配置していくゲームです。エクセルでクロスワードパズルを作成する場合、まずはセルに単語を入力します。単語を入力するときには、同じ文字が入力されていないかを条件付き書式でチェックすることができます。また、単語の入力が完了したら、数式を使って単語が重なっている箇所の文字が正しいかどうかをチェックすることができます。これによって、自動的にクロスワードパズルの答えが導き出されます。  色を使ったパターンマッチングゲームは、同じ色のブロックを3つ以上つなげていくゲームです。エクセルで色を使ったパターンマッチングゲームを作成する場合、まずはセルに色を塗ります。色を塗るときには、同じ色が繋がっていないかを条件付き書式でチェックすることができます。また、色の塗りが完了したら、数式を使ってつながっている同じ色のブロックの数を数えることができます。
0
カバー画像

【初心者】ExcelVBAを使った日報自動作成ツールの作成方法

本記事では、ExcelVBAを使った日報自動作成ツールの作成方法について解説します。日報はビジネスマンにとって欠かせない業務の一つですが、手動で作成すると時間がかかり、ミスも起こりやすくなります。そこで、ExcelVBAを使って自動化することで、効率的かつ正確な日報作成を実現しましょう。 1. ExcelVBAとは ExcelVBAとは、Microsoft Excelのマクロ機能を使って、VBAというプログラミング言語を使ってExcelの操作を自動化することができるツールです。ExcelVBAを使うことで、繰り返し行う作業や複雑な計算処理を自動化することができます。 2. 日報自動作成ツールの作成方法 2-1. シートの準備 まずは、日報を作成するためのExcelファイルを用意しましょう。このファイルには、日報をまとめるためのシートが必要です。シートの作成方法は、新しいシートを作成するボタンをクリックするだけで簡単に作成することができます。 2-2. マクロの作成 次に、VBAエディタを開いて、マクロを作成します。マクロとは、Excelの操作を自動化するために記述するプログラムのことです。今回は、日報のフォーマットにあわせて、各項目に自動で値を入力するマクロを作成します。 例えば、日付や時間、プロジェクト名、作業内容、作業時間などの項目に値を入力する場合、以下のようにマクロを作成します。このように、各項目に値を入力するマクロを作成することで、日報の作成作業を自動化することができます。 2-3. ボタンの作成 最後に、作成したマクロを実行するためのボタンを作成します。ボタンを作成
0
カバー画像

ガツガツ稼ぐことは苦手な私の仕事に対する考え

先日、ある社員の方に「これ自動化してほしいんだけどできる??」と聞かれました。私はその方が他の社員の方よりも、業務量が多く、苦労されいてるのをよく知っていました。ですので、「この人の要望はなんとしても叶える必要がある」と瞬時に思ったのです。すぐにシステムを作成し、完成したことを伝えました。すると、その方は嬉しいというか、安心したような表情をされたのです。これで、負担が減る。これで、少しでも帰る時間が早くなる。そう思われたのでしょうか。そう。私の持っている技術で、その方の不安を1つ取り除くことができたのです。変な話、この時私は、初任給を頂いた時よりも何倍もの快感を得ました。(変な比較で申し訳ない笑)私は、仕事をする上で「儲けよう」と考えることは苦手です。(他の方がそうやってお仕事されていることに反対ということではないです。私がそうすることが苦手ということです。)ビジネス!営業!数字!となると、どうも心に引っ掛かりがあって。そうのような気持ち仕事をすることは、どうも私には合ってないようです。それより、自分のした仕事が誰かの不安を取り除き、安心させられる。その対価として、お金を頂ける。綺麗ごとではなく、その考え方の方が私が気持ちよく仕事ができるのです。話を戻しますと、今回のシステム改善では、私の仕事で直接的な利益を得たわけではありません。ですが、今回のシステムで毎日20分程の時短。20日だと6時間程の時短。120日だと40時間の時短となります。これだけ分、負担が減り、その分利益も増える。そう考えるとなんだか誇らしいというか。私が納得いく稼ぎ方だなと思いました。働く上ではどうしても「お
0
カバー画像

Excel vbaで Autocad制御、何でも乗ります。

【自己紹介】機械エンジニアとして機械設計とシステム設計の仕事をしています。業務を早く行うためEexcel Vbaを学習しました。副業でVbaコードを作成しますので返信は遅くなることもあります点、ご理解のほどお願いします。あらゆる現場で起こる様々な課題や問題に対応してきましたのでお悩みことがありましたら相談お願いします。【サービス内容】1. Excel VBAプログラムの開発2. Excelファイルの改修3. Excel VBAでAutocad 図面自動化4. Excel自動化に関するものは先ずご相談お願いします。【Excel VBAでAutocadを制御するメリット】1. 自動化が可能になる 手作業で行う必要のある繰り返し作業を自動化することができます。これに より、作業時間の削減や作業の精度向上が期待できます。2. 操作の簡略化ができる  Excel VBAを使ってAutocadを制御することで、作業の操作を簡略化する  ことができます。これにより、操作の簡単化とミスの減少が期待できます。3. 柔軟性が高まる   データの取り込みや出力などを自動化し、作業の拡張性や再利用性を高める ことができます。【見積もり】見積もり金額は以下で計算します。 「作業時間 \3000/時間」+「技術料」+「消費税」 技術料はの商品の難易度でこちらで提示させていただきます。 最低金額は\5000です。 2回目以降の購入者様は1000円割引いたします。 【取引の流れ】 ①「仕様相談(ダイレクトメッセージ)」 依頼内容お寄せください。仕様が固まり次第お見積とスケジュールを提示します。 ↓ ②「商品作
0
カバー画像

ダビンチにアクセスするマクロを書いてみた

ChatGPTのAPIは近日公開という情報があり、OpenAIのサイトにてウェイティングリストに登録はしてみたものの、OpenAIでは既にAPIを提供していて、言語処理を行うGPT-3は有償サービスだけれど、3か月までは18ドル分無料でアクセスできるそうです。GPT-3は4つのデータモデルを持っているが、もっとも精度が高いのがダビンチで、1000トークンあたり2セントという価格になっています。となると、3か月で90万トークンまで無料で使えるという計算になります。なお1000トークンはおよそ750ワードに相当するそうです。他に画像を作成するDaleは検証用で現時点では無料、プログラミングコードを生成するCode-Xもベータ版で現時点では無料。早速アクセスするためのAPIキーを取得し、APIにて質問を送信し、回答を取得するマクロを書いてみました。APIのメッセージはJson形式で送ることになっていて、Pythonやnodes.jsには公式ライブラリが提供されています。Curlで直接HTTPプロトコルで送ることもできるので、その例を参考に、Excelのマクロを組んでみました。HTTP通信には、XMLHTTPRequestを使います。    Dim objHTTP As Object    Send = Null     Set objHTTP = CreateObject("msxml2.xmlhttp")     objHTTP.Open "POST", APIHost, False     objHTTP.setRequestHeader "Content-Type", "app
0
カバー画像

VBAでクラスモジュールを使うわけ

さて、先日使い倒したChatGPTで、VBAのクラスモジュールの制限の事を聞いたら、こんな丁寧で詳しい回答が返ってきました。VBAで作成するクラスモジュールは、Javaなどのオブジェクト指向言語で作成するクラスと比較して、以下のような制限があります。1.クラスの継承の制限: VBAでは、クラスの継承をサポートしていません。そのため、クラスの再利用性が低下する可能性があります。 2.ポリモーフィズムの制限: VBAでは、クラスのメソッドのオーバーロードやオーバーライドをサポートしていません。そのため、同じ名前のメソッドに対して、異なる引数を設定することができないため、ポリモーフィズムの実現が困難になる可能性があります。 3.インターフェースの制限: VBAでは、インターフェースを明示的に定義することができません。そのため、クラスの機能やメソッドが不明瞭になる可能性があります。 4.例外処理の制限: VBAでは、例外処理をサポートしていますが、Javaなどの他のオブジェクト指向言語に比べて、精度が低く、エラーメッセージの表示が不明瞭であるため、開発者にとっては制限に感じられるかもしれません。 以上のように、VBAで作成するクラスモジュールには、オブジェクト指向プログラミングにおける一般的な機能が制限される可能性があるため、開発者は注意が必要です。 固まってしまいました。特に最後の1文、「開発者は注意が必要です」ではなく、「開発者は工夫が必要です」では???他にツッ込みたいところがいくつもありましたが、ここでは止めておきます。VB及びVBAのクラスモジュールの最大の制限、継承ができな
0
カバー画像

ChatGPTで作ったマクロ

最近、勤務先の社長からChatGPTを使ったマクロ作成の話があり、「Excelも、Pythonも、もうChatGPTでプログラムが作れちゃうよ!」と言われて、よーし!と妙に闘志満々となり、ChatGPT使い倒してみました。そんなに意地悪するつもりはなく、基本的なものをと以下のお題を出したところ、「Excelの選択中範囲がある範囲に含まれるかVBAで確認するには?」帰ってきたマクロは以下のようなものでした。Dim selectedRange As Range Set selectedRange = Selection Dim selectedRangeAddress As String selectedRangeAddress = selectedRange.Address Dim targetRange As Range Set targetRange = Range("A1:B10") ' 適切な範囲を指定します。 Dim targetRangeAddress As String targetRangeAddress = targetRange.Address If InStr(targetRangeAddress, selectedRangeAddress) > 0 Then     MsgBox "選択範囲が含まれます。" Else     MsgBox "選択範囲は含まれません。" End If わっはっはっはっは1人パソコンの前で大爆笑。このコードは、Selection.AddressがtargetRangeAddressと全く同じか、$A1:$B1とかであれば
0
カバー画像

【Excel VBA】参照するキーが無いときはどうする?

YouTubeでも紹介しています。是非ご覧ください。今まで、初体験でした。 参照するキーがなく、データを転記することになるとはね。 データベースは、正しく作成しましょう。 そんな馬鹿な? こんにちは。伊川です。 題名で、釣ったわけではないのですが、 いや、俺がばかなだけなのか、わかりません。 競馬のデータベースばかり作成しているので、忘れたかもしれません。 最近、会社で、やたら個人情報の転記の業務がありました。 個人情報は、怖いので、コピペをするくらいなら、VBAで転記します。 しかし、参照するキーがないので、5分ほど、固まりました。 その対処法を紹介します。 このブログはこんな人にお勧め 転記業務がやたら多い人 参照するキーがなくて困っている人 VLOOKUP神話を信じている人 このブログを、読み終わるころには・・・・ 創意工夫で、何でも出来てしまいます。 本当は、関数で、サクサクやりたかったのですが、できませした。 解決策は、For eachで解決しました。 For each Next構文 For Next Do Loop この次位に有名でしょうか? 田中先生が、For eachで配列を利用する場合は、ほとんどないと、仰っていましたので、その辺は無視します。 VBAでは、ほぼ、For Nextで、完了します。 しかし、例外的にも、For eachは、知っておいたほうが良いでしょう。 For Nextを理解していれば、なんてことはありません。 参照するキーがない 作業手順 その1 データベースを確認 このようなデータベースがあるとします。上記のように整形したいのです。 まさか
0
カバー画像

不要な文字を含む文字列から必要な数字を出力するツール。

リスト化した文章からセル内の不要な文字を除去して必要な数字をCSVファイルで出力します。文字列のリストからツールへ手作業でコピー貼り付け入力用文字列の条件文字列に必要な数字の判別用の記号(この場合J)ある場合は文字数制限なし長すぎる文字列は処理できない。文字列に判別用の記号(この場合J)があり必要な数字の前に不要な数字がない条件を満たしてない場合・判別用の記号(この場合J)がない場合は50文字までの文字列を抽出可能それ以上は出力不可能(コードを変更すれば50文字制限を増やせることが可能)・文字列にJがない場合必要な数字の前に不要な数字があると出力されてしまう為判別用の記号が必要(この場合はJ)VBAのでの作業の可視化と途中計算をSheet上で行う。必要な数字を抽出した出力結果をCSVファイルで出力
0
カバー画像

請求書作成28行タイプ改定

請求書作成単票(最大28行書込み可)タイプの改定を致しました。この請求書ExcelVBAアプリは比較的請求量の少ない方に適しています。一度の請求の詳細が最大28行記入可能です。改定部分①一度に7行入力のFormから1行入力のFormに変更。 これまで、一度入力してしまうと修正ができませんでした。 1頁分全てを入力後に印刷になりますので 確認と修正が可能になりました。②修正機能の強化  入力Formに修正機能を追加しました。  修正、追加、削除が可能になりました。  請求行に空白、項目等の記入追加も可能です。 ③入力アイテムの登録の追加  商品、得意先の他、項目、備考も登録が可能になりました。  一度入力したものを出来るだけ再利用できるようにしました。④請求の累積データからの再発行と呼出  請求書発行と同時に請求書のデータが蓄積されていきます。  蓄積データからの請求書の再発行の機能を追加しました。  蓄積データから詳細の再呼出しができます。  印刷後に修正が必要な場合、再呼出しをして修正、作成が出来ます。⑤簡易の売掛・入金管理  従来どおり、売掛と入金の管理が出来ます。⑥印刷  印刷は「印刷プレビュー」の画面で印刷を選択できるようにしています。  印刷するかしないか、印刷のプリンタの選択が可能です。  もし、PDFの印刷が必要であれば「プリンタの変更」で  Windowsの標準の「PDF印刷」を選択して頂くと  「PDF」印刷が出来ます。⑦カスタマイズ  印刷帳票のテンプレート(フォーマット)の変更  印刷行数の変更は可能です。  (追加料金が発生する場合があります。ご相談くだ
0
カバー画像

見積書作成建設業界用改定版

「ExcelVBA見積書作成建設業界用」をほぼ全面的に改定致しました。見積書の形式は業務によって様々です。その中でも「建設業界」の見積は特別面倒なものになります。なぜ面倒なのでしょうか?まず作業工程が長い。通常の建設工事ですと、仮設工事から最終の引き渡しまでとても長いものです。次に、使用する材料が多岐にわたるということです。建物ですと、土台から上物まで完成まで非常に多くの材料を使用します。後は人件費でしょうか。一つ一つの作業の「人工」計算が必要になります。その他付随する経費等が加わります。様々な見積書を拝見いたしますとこうした煩雑な見積を見やすく、解りやすいものにする為に集計部分。書籍で言えば「目次」的な頁を作成しているようです。各工程の合計金額を集計部分に表記して「総合計」を算出する方法です。各工程の「詳細」は別ページで表記させるという事です。このように「合計部分」と「詳細部分」を分けて表示させる方法はとても解りやすく、見やすいものです。今回改定した「ExcelVBA見積書作成建設業界用」はこの方式をとりました。以前のバージョンでも「合計部分」と「詳細部分」を分けて表記させていましたが、操作性の向上を目指しました。作成手順は以下のとおりです。①見積の詳細項目の作成  例えば:仮設工事とか基礎工事・・・  作成すると「合計部分」実際には「目次」の名称のSheet上に  詳細名が書き込まれます。②詳細項目の見積作成  最後に合計を入れると「目次」Sheet上の詳細名に合計金額が記入されます。順に詳細項目の見積を作成して行きます。③集計部分「目次」部分の作成  詳細の合計、その他の
0
カバー画像

マクロ駆動における発動ボタンの設定

VBAを作動させる際に、Excelのシート状に『開発』タブの、『コントロールの挿入』からボタンを作成する方法があります。このボタンは大きさや名前は変更することができますが、色合い、形状などの変更はできません。ボタンが1つだけであれば問題は無いですが、いくつも条件を分けるボタンを作成すると、単調なシートになるばかりでなく、間違いの元になってしまいます。そんな時には、任意の図形や写真にマクロを登録することができます。『挿入』タブから図を選択し、必要な図や写真を選択します。この時点で図形の色、大きさ、テキスト部分のフォントの設定もできます。その後、図を選択し、マウスの右クリックを押し、『マクロの登録』から設定できます。上記の方法で、図にマウスカーソルを合わせると指差しマークになるのでVBAを駆動できます。注意点としてマクロを登録すると、必ず指差しマークになってしまうので、マウスの右クリックを押してから図を編集する必要があります。最後に、この設定した図は初期設定のままでは印刷時に印字されてしまいます。これを避けるためには、図を右クリックし、『図形の書式設定』を選択。図形のオプション→プロパティから、『オブジェクトを印刷する』のチェックボックスを外します。上記の方法により、VBAの駆動ボタンをユーザーの使用感向上のために配置し、より有用に活用できるように設定してみてください。
0
カバー画像

Excelを開いたり、閉じたり

ExcelをVBAで開いたり、閉じたりする場合について説明します。Excelデータを開くには、Workbooks.Open "C:\パス名¥ファイル名"で指定できます。C:\パス名には、開きたいデータのパソコン上の所在地を記載します。データをマウスの右クリックから、プロパティを開きます。全般のタブの真ん中あたりに、場所:という項目があるので、コピー&ペーストします。ファイル名はデータの名前を記載しますが、必ずファイル名の前に『¥』が必要です。データを閉じる場合は、Workbooks("ファイル名").Closeで指定できます。閉じる場合はパス名は不要ですが、ファイル名は文字列になるので、””で囲む必要があります。最後に、A,B,CというExcelデータがあり、Aを開くと、BとCが連続して開くようにしたい場合には、Sub Auto_Open() BとCを開くVBAを記載します。End Sub上記のように組み合わせるだけです。色々とお試し下さい。
0
カバー画像

作成したマクロ(プロシージャ)を呼び寄せるには

VBAでマクロを作成する上で、何度も引用する事があります。例えば、表の記載事項をクリアーしたり、オートフィルターのフィルターを解除して全体の表を再表示させる場合、はたまた初期状態に戻すプロシージャは何度も使用することがあると感じています。いちいちマクロを作成することも可能ですが、VBA全体が長くなり、かつ一部修正が必要な場合に引用したプロシージャのすべてを修正する手間暇がかかります。そんな時には、Callステートメントの出番です。具体的に、Sub 全消去()Range(”A1”)=1000End Sub上記のプロシージャを別のプロシージャで活用したい場合には、Sub 全体のまとめ()Call 全消去End sub上記のように記載することで、『全体のまとめ』のマクロを実行することで、『全消去』のマクロを起動させることが可能です。何度もプロシージャを引用する場合は、Call ステートメントを活用することで、修正する手間や間違いを防ぎ、マクロそのものも判読性が高くなります。
0
カバー画像

セルを指定した後の処理について

値や文字を入力する場合には、Range("A1")やCells(1,1)などでセル番号を指定した上で、Range("A1").value="任意の文字"と記載すると、VBAで文字を入力します。この時に、指定したセルの隣の列のセルもしくは、一つ下のセルを指定する場合には、Offset(行, 列)を記載することで、細かな設定ができます。選択しているセルのことは、ActiveCellと記載できるので、アクティブセルを移動させる場合は、ActiveCell.Offset(1, 0).Select と記載できます。この場合は、一つ下の行のセルを指定します。Offset(行, 列)の具体的に説明すると、行:正の数字であれば、行を下方向に、-1など負の数であれば、上方向にずれていきます。列も同様に、正の数字であれば右方向に動き、負の数字であれば左方向にずれていきます。アクティブセルを微調整する場合に重宝しますが、入力した値を一つずつずらして入力する場合は、Offset(行, 列)よりも、変数を活用した方法の方が便利です。この方法についてもまた説明します。
0
カバー画像

Excelアドイン作成方法(説明用)

1.新規Excelファイルを開く。2.開発タブ>Visual Basicで以下の画面を出し、右クリック>ファイルのインポート3.必要なファイルを選択し、「OK」をクリックする。(拡張子が「.basのもの」)※今回は、Module1.bas4.インポート後、Excel画面へ戻り、「F12」を押し、名前付けて保存の画面を出し、名前を付けてファイルの種類を「Excelアドイン(*.xlam)」とし、保存する。※保存先は、変更しないこと。※ファイルの種類を間違えないようにすること。5.「C:\Users¥【ユーザー名】\AppData\Roaming\Microsoft\AddIns」へアクセスし、先ほど作成したファイルのファイル名に.zipをつける。<例>「Book1.xlam」の場合「Book1.xlam.zip」とする。6.変更した名前のファイルを開く。(開くと以下のような状態になる。)7._relsフォルダとcustomUIフォルダを「Book1.xlam.zip」へコピーする。上書きしますか?と聞かれたら、上書きしてください。(_relsフォルダはフォルダごとではなく、中身を出してコピーしてください。)8.「Book1.xlam.zip」を「Book1.xlam」へ戻す。(zipを取る)9.Excelファイルを開く。10.開発タブ>Excelアドインをクリックする。11.作成した「Book1」をチェックし、「OK」をクリックする。Excelのリボンに新たなタブができていたら、成功です。作成手順は以上になります。どなたかの参考になれば、嬉しいです。
0
カバー画像

あれ?ExcelVBAのツールで1行目だけうまくいかない。

ExcelVBAのツールで、1行目のデータだけうまく取り込めない(うまく判定されない)ことがあると思います。それは、文字コードが原因の可能性があります。以下の点を確認してみてください。上記の画像では、「UTF-8」となっていますので、これでは、Excelが想定している文字コードではないため、うまくいかない場合があります。「ANSI(Shift-JIS)」に変更してみてください。「ANSI(Shift-JIS)」へ変更方法ファイル>名前付けて保存・・・赤枠の文字コードを「ANSI」を選択し、保存してください。以上で、変更可能です。<補足>変更後、そのまま保存すると文字化けする場合がありますが、その場合は、記載されている文字を別のファイルに退避させておき、文字コードを変えたファイルを作成後貼り付けしてみてください。以上となります。どなたかの参考になれば、嬉しいです。
0
カバー画像

フィルターで条件を追加する場合には、

Excelにて、データベースの条件を抽出する場合に使用するフィルター機能の条件を増やすことについてです。VBAでフィルター機能を利用するには、AutoFilter を記載します。同じ列の中で、複数の検索値を抽出したい場合には、 Criteria1:=  Criteria2:=で検索値を増やすことも可能です。。Operator:=xlAndなども設定する必要がありますが。しかし、それ以上の検索値を追加することはできないようです。そこで、Criteria1:=Array()を活用することで複数、いやどこまでも検索値を設定することができます。一点だけ、注意点があります。これは、Arrayがあるなしに関わらず、検索値は文字列でなければなりません。具体的には、Criteria1:=Array("田中"、"鈴木"、"清水")などです。便利なものの、注意も必要です。
0
カバー画像

シート間で検索をする場合。

過去のブログにて、VBAにおいてFind メソッドの使用方法を記載したことがあります。エラーの処理についても大切ですが、Findメソッドをシート間で使用したい場合のアイデアについて記載します。同一のシート内でFindメソッドを利用する場合は、問題は生じにくいです。シートを切り替えて操作する際に、シートをActivateしないと操作できません。この事象は、Aというシート(以下:Aシート)内にあるセル(A1)の検索条件をBというシート(以下:Bシート)で探す場合に解決しなければならない問題となります。VBAにて、Sheets("B").Range("B:B").Find(What:=Sheets("A").range("A1").value,_  LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)Aシート上の、A1セル内の値を、BシートのB列で探すことを意図していますが、上記のコードではエラーがでてしまいます。解決策としては、AシートのA1セルの値を変数に代入します。Dim i as string  Findメソッドでは、検索条件に文字列を指定する必要があるため、stringi = Sheets("A").cells(1,1).valueSheets("B").Range("B:B").Find(What:= i ,_ LookIn:=xlValues, _LookAt:=xlWhole, SearchOrder:=xlByColumns)以上のVBAになれば、エラーがでなくなることは確認済みです。ちなみに、S
0
カバー画像

ユーザーフォームで事前準備

VBAでは標準モジュールでコードを作成することも多いのですが、ユーザーフォームを活用することで自由度の高い入力フォーム画面を作成することができます。入力画面を利用する場合、ボタン配置などはセンスを必要としますが、ComboBox1を利用する場合は、RowSource を活用することでExcelのデータの入力規則のリストのような機能を使用することができます。方法としては、ユーザーフォームを開くときに、ComboBox1の値の中に、指定したセル範囲の値を放り込んで、ユーザーフォームが表示された時点で、選択できるようにする感じです。具体的には、Private Sub UserForm_Initialize()の中で以下のコードを書くことで、プログラムできます。ComboBox1.RowSource = セル範囲上記のコードで、ユーザーフォーが開かれた時点で、コンボボックス1の中にセル範囲の値を指定できます。このセル範囲は、名前付きセル範囲も指定できます。ComboBox1.RowSource = "名前を付けたセルの名前"忘れやすいのは、セル範囲を””で囲むことです。
0
カバー画像

論理演算子 知らないものがありました。

VBAの勉強は本当に奥が深いものだと感じることがありました。条件Aと条件Bを比較する場合には、タイトルの絵のような等号、不等号を思い出すことは多いと思います。VBAに慣れている方は、And Or Not この辺りもご存知だと思います。恥ずかしながら勉強不足で、以下の論理演算子があることを最近知りました。① 条件A Eqv 条件B条件Aを満たし、かつ条件Bを満たす。または、条件1を満たさない、かつ条件Bを満たさない。②条件A lmp 条件B条件Aを満たさない、または条件Bを満たす。③条件A  Xor 条件B条件1を満たし、かつ条件Bを満たさない。または、条件Bを満たし、かつ条件Aを満たさない。勉強になりました。
0
カバー画像

貴重なデータを守るには。

プログラミングをVBAにて作成して、他者に譲渡もしくは活用していただく際に注意点があります。それは、VBAのセキュリティについてです。渡した方がメンテナンスをする場合には、情報開示の意味も含めてセキュリティは不要です。しかし、活用時にユーザーがVBAに間違って記入、削除など予期せぬことをしてエラーがでるようになってしまうと、VBAをすべて点検する必要性がでてしまいます。分かりやすいコードの作成は基本であり、コメントなどで文脈が整理されることは前提ですが、そのチェックには骨が折れてしまいます。そんな時には、VBAをパスワードにてロックをかけることができます。方法は下記を参照。①VBAの画面を開きます。『開発』タブからも開くことができますが、Altキー+F11が便利です。②『ツール』タブ→『VBA projectのプロパティ』③保護タブからパスワードを入力します。また、Excelそのものにも、セキュリティをかけることができます。『校閲』タブ→保護からシートもしくはブックの保護からセキュリティをかけられます。セルの書式設定から個別にもセキュリティをかけることができますが、シートの保護を合わせて設定する必要があります。
0
カバー画像

セルに入力できる値を限定するには

VBAでセルの値によって条件式を分岐させる場合に、セルに入力した値がまったく一緒でないとエラーがすぐにでてしまいます。もちろん、その値の空白の数や半角/全角、ひらがな、カタカナ、漢字まで完全一致させる必要性があります。そんな時には、『データ』タブの『データの入力規則』を利用します。やり方は簡単…①入力させたい種類の値をセルに入力②『設定』タブの入力値の値を『リスト』にします。③元の値を、①で入力したセルを範囲で設定する以上で終わりです。しかし、ここで問題があります。①で設定した値を追加、削除してしまうと、再び設定する必要があります。そんな時には、『数式』タブ→『名前の定義』にセル範囲に名前を付けて、上記③の工程で設定するセル範囲を名前付きセルにしてしまいましょう。そうすることで、自動的にリストに追加、削除されるのでメンテナンスも行いやすくなります。
0
カバー画像

OneDriveの影響下にVBA(マクロ)で作成したファイルを保存しようとするとエラーになる。(回避方法)

プログラム自体は、変えていないのにエラーになる時とならない場合があります。その時は、「OneDrive」がインストールされているか確認してください。【確認方法】赤枠に「OneDrive - Personal」がある場合は、インストールされています。「OneDrive」が入っていると、プログラムが変わっていなくても保存エラーになる場合があります。(毎回ではないので、気づきにくいです。)エラー回避方法1.OneDriveのアンインストール①コントロールパネル>すべてのコントロールパネル項目>プログラムと機能アンインストールをクリックして、アンインストールしてください。※注:バックアップをしなくなりますので、よく確認してから実施してください。2.OneDrive影響下以外の箇所に保存するようにパスを変更する。【例】別のドライブ(DドライブやEドライブなど)に保存する。どなたかの助けになれば、嬉しいです。
0
カバー画像

マクロの実行時の配慮について

マクロを利用した際にシート間を参照したり、計算工程が長くなると、画面がチカチカして目に負担がかかってしまうことがあります。計算している感じがあるのでフリーズした感じはありませんが、パソコンに慣れてないユーザー、計算時間がかかればかかるほど負担感を感じてしまいます。そんな時には、Application.ScreenUpdatingをマクロの中に記載することでチカチカ感をなくすことができます。注意点はそのままにしてしまうと、Excelを作動しているときに画面に切り替えが無くなったままになるので、Application.ScreenUpdating = Trueを記載して、設定を元に戻すことが大切です。加えて、マクロが終わったことろを、Msgboxを記載して、ユーザーにマクロが正常に終わったことを知らせるひと手間を加えることで、親切なマクロにすることができます。
0
カバー画像

グループ化とテーブルの活用

昨日のブログにて、グループ化したままではVBAを操作することができないため、グループ化したものを再表示する必要性について記載させていただきました。Excelに詳しい後輩に確認に聞くと、公式でもそのような記事があるそうです。プログラミングを作成しているなかで、グループ化したままでも、VBAが操作することができる場面があることを発見することができました。注意点として、あらゆる場面でエラーがでないかは検証していませんが。その方法は、対象全体をテーブルにした状態で、グループ化する方法です。この方法であれば、findメソッドで非表示したセルが該当する場面でもエラーを出すことなく動作しました。この方法が、たまたまなのか、バグなどのかは不明ですが、一度お試しあれ!実務では不確かな方法は採用しにくいため、有用ではありませんが…。
0
カバー画像

記憶の保持について掘り下げて

昨日説明した記憶について詳しく説明します。短期記憶についてはワーキングメモリという考えがあります。電話帳を見て電話番号を書き写す、初めて会った方の名刺を見て氏名を確認する、買い物でお釣りの金額を自分でも確認する。上記の短時間に正確に覚えることは日常生活でもあると思います、数分は覚えていれますが、何か別のことをするとさっぱり覚えていないような記憶のことです。短時間での記憶しておけるため便利ですが、本当にすぐに忘れます・・・。また、手続き記憶とは自転車や一輪車に乗れるようになると転ぶことがなくなる、ミッション車の運動での半クラが感覚で思い出すなど言葉だけでは説明が難しいような記憶です。VBAなどのプログラミングを覚えることは上記の記憶ではなく、意味記憶に当たると考えています。覚えたてや思いついた関数やプログラミングは短期記憶にあたりますが、この内容を長期記憶にするには復習がかかせません。さらに、自分のものにするには単に覚えるだけでなく、それを流用、転用、応用できなければ実務レベルには至りません。知識とそれを工夫する能力、上を見ればきりがありませんが、地道にコツコツと高みを目指したいものです。
0
カバー画像

今まで知らなかったエクセルの話 その2(シート数の上限)

前回の記事「Excel2007」がエクセルのバージョンアップの歴史において転換点であるとお伝えしました。そして扱えるデータ量が大幅に増えたことも解説しました。■「Excel2003」まで1シート当たりの行数 65,536行 1シート当たりの列数 256列 ■「Excel2007」~「Microsoft365」 1シート当たりの行数 1,048,576行 1シート当たりの列数 16,384列ちなみにエクセルシート数に上限はあるのでしょうか?今回はその事に触れてみたいと思います。結論から申し上げますとエクセルシートの上限は、そのPCのメモリ量に拠るので決まった上限数があるわけではありません。ということで実際に何シートまで増やせるのか検証してみたいと思います。といっても1シートずつ手作業で増やすのは、手間暇が掛りすぎで現実的ではありません。VBA(プログラム)を使って自動的にシートを増やし、どこまでシートが追加されるのかを検証します。VBAプログラムは以下の通りとてもシンプル(たったの6行)です。【検証結果】シートはどこまで増やせたか!?プログラムを走らせて10数分して以下のようなエラーが出ました。はたして何シートまでできたのでしょうか?「Sheet5452」まで追加できました。ちなみにこの後このファイルはすぐに落ちてしまいまともに使える代物ではありませんでした。【まとめ】■エクセルシートは私のPC環境下では5452シートまでシート作成できました。■とは言え、メモリ不足状態でまともに使えるファイルではありませんでした。⇒物事に常識的限度があるようです。。。以上くだらない検証にお付き合
0
カバー画像

【VBA】-Episode②-APIキーゲットだぜ!

みなさんこんにちは。イプシロンです。VBAを使用してWebAPIで遊び倒す企画。今回は-Episode②-になります。早速いってみましょう!!!OpenWeatherMapのAPIを使ってみる前回はWebAPIとはなにやつ?というタイトルで、WebAPIについてざっくり説明しました。今回はその中でも「OpenWeatherMap」のAPIを使用する準備をご説明します。使用するAPIまずは、下記のAPIをご覧下さい。(エイチティーティーピーエス)://api.openweathermap.org/data/2.5/weather?q={city}&appid={key}&lang=ja&units=metricこれは、指定した都市の現在の天気を取得するAPIになります。{city}には、Tokyoや、Ikebukuroや、Saitamaや、Urawa等、天気を取得したい都市名を指定します。{key}には、APIキーを指定します。今回はこいつ(APIキー)をゲットしに行く手順です。手順APIキーをゲットするには、OpenWetherMapサイトに会員登録する必要があります。無料で遊ぶわけですから、どこ馬の骨なのかは明らかにするという紳士たる所以です。登録する材料は、ユーザー名、メールアドレス、パスワードです。1.サイトへアクセスします。アクセスするサイトは下記です。(エイチティーティーピーエス)://home.openweathermap.org/users/sign_up2.ユーザー名、メールアドレス、パスワードを入力します。3.もろもろチェック項目にチェ
0
カバー画像

【selenium】robots.txtってなんやねん。

みなさんこんにちは。イプシロンです。スクレイピングを実施する前に注意しなくてはならないのが、webサイトの利用規約や注意事項です。なぜなら、目的次第では利用規約に反して相手先に迷惑をかけてしまう可能性があるからです。その中で、「robots.txt」の存在は必ず出てきます。今日はその、「robots.txt」について書きます。では、いってみましょう!!!robots.txtとはロボッツテキストと呼びます。クローラーに対するWebページへのアクセス制限(ルール)を記載したファイルのことです。 Webサイトのルート配下に配置されていて、以下のように対象サイトのURLに直打ちすると、閲覧することも可能です。(例)ココナラのサイトに対して、robots.txtを確認したい場合https://coconala.com/robots.txtするとこのようになります。robots.txtのフォーマットについて基本的には以下のことが記載されています。【User-agent】  →意味:クローラーの名前を指定 【Crawl-delay】  →意味:巡回頻度(秒数) 【Allow】  →意味:指定されたパス配下はアクセス可能 【Disallow】  →意味:指定されたパス配下はアクセス不可【Sitemap】  →意味:sitemap.xmlの場所を明示となります。ここで、先ほどのココナラのrobots.txtを読んでみましょう。User-agent: *Disallow: /tags/ Disallow: /register Disallow: /login Disallow: /smartpho
0
カバー画像

【Excel/VBA】VBEの背景色や文字色を見やすくする

みなさんこんにちは。イプシロンです。VBAではコードをカキカキする際、VBE(Visual Basic Editor)という専用のエディタを使います。初期設定のままでも十分なのですが、これ、、、見にくくないですか?長時間作業するのであれば、画面は真っ黒にして使用したほうが疲れにくいし(個人的感想)、なんかかっこよくないですか?ww私は、壁紙も、Officeソフトのテーマも、VSCodeもすべて真っ黒設定にしています。理由はかっこいいからですwと、いうわけで今回は、VBEの背景色や文字色を変更する方法について書きます。VBEのデフォルト画面VBEのデフォルト設定は下記のような画面になります。この状態でも充分使用できます(当たり前)ここから好みの文字色やフォントに変えていきます。手順1.画面上部の「ツール」→「オプション」をクリックします。2.オプション画面の「エディターの設定」タブをクリックします。こちらで設定して、最後に「OK」をクリックすれば完了です。以上!かんたん!!!コードの表示色についてエディターの設定にある、「コードの表示色」についての詳細は下記のとおりです。(別に覚える必要はありません。)===================================== ・標準コード:数値や文字列などの値など  ・選択された文字:クリックで選択した文字 ・構文エラーの文字:構文中のエラー箇所 ・次のステートメント:実行時エラー、Stopなどで停止している次のステートメント  ・ブレークポイント:ブレークポイントを貼っている箇所 ・コメント:コメントアウトの文字 ・キーワード
0
カバー画像

【Excel/VBA/Selenium】chromeが突如起動しなくなったときの対処メモ

みなさんこんにちは。イプシロンです。久しぶりにSeleniumでChromeを立ち上げると、突如エラーになり動かなくなる現象が発生します。久しぶり故にドキっとするので、本日は「chromeが突如起動しなくなる時の対処法」について書きます。症状今まで問題なく使用できていたのに、突如以下のようなエラーが飛び出してきました。「環境変数の値がどっかで変わった?」「そもそも何か設定するんだっけ?」「コードいじる必要あるの?」など、独り言が増え出す可能性大。。。結論(対処法)ChromeDriverを最新のにすれば良い。う~ん。。。かんたん!!!以下、解決までの手順です。手順1.右上の三点→「ヘルプ」→「Goole chromeについて」をクリックして、 Chromeブラウザのバージョンを確認します。2.バージョンを確認します。今回ですと、ver:103.0.5060.134ですね。3.以下のサイトから、該当するバージョンのchrome driverをダウンロードします。4.解凍ソフトで解凍して、chromedriver.exeを入手します。5.Windowsの「ファイル名を指定して実行」を表示させて(ショートカット:Winキー + 「R」キー)、 次の文字列を入力して、SeleniumBasicのインストール先のフォルダを表示します。C:\Users\(ユーザーネーム)\AppData\Local\SeleniumBasic6.先程入手した「chromedriver.exe」を上書きします。(オリジナルのchromedriver.exeはリネームしておくといいかも)。7.解決です。最後に
0
カバー画像

【Excel/VBA/Selenium】Webページに指定要素が存在するかチェックする

みなさんこんにちは。イプシロンです。ECサイトなど商品の在庫状況によって、サイト内の指定要素が変更される場合があります。そのようなサイトに遭遇した際、スクレイピングする際に、webページに指定要素が存在するかをチェックすなければエラーになりますので、本日はその対処法について書いていきます。結論指定要素が存在するかどうかを判断して、分岐処理をすれば問題ありませんWebページに指定要素が存在するかチェックするサンプルコード=================================Public Sub 指定要素の存在チェック()     Dim driver As New Selenium.WebDriver     Dim myBy As New By     Dim sURL As String  sURL = "スクレイピングしたいサイトのURLを入力"         driver.Start "chrome"     driver.Get sURL         '■要素が存在していればTrue/存在しなければFalse     Debug.Print driver.IsElementPresent(myBy.ID("対象要素のIDを入力"))     '■要素が存在してれば処理を行う     If driver.IsElementPresent(myBy.ID("対象要素のIDを入力")) Then         '存在していた場合の処理     Else         '存在していない場合の処理     End If         '■上記は
0
カバー画像

【Excel小ネタ-1】マウスを使わずにExcelを起動する方法

 エクセルを起動するには、デスクトップ上のショートカットアイコンをダブルクリックする方法が一般的かと思います。しかし、これだとわざわざとマウスを使ってカーソルをアイコン上に移動させる必要があり、無駄な時間がかかります。ここでは、Excelをキー操作だけで素早く起動させる方法をご紹介します。①まずWindowsキーを押すと、スタートメニューが表示されます。②続いて、Eキーを押します。 ※WindowsキーとEキーは同時に押すとエクスプローラーが起動してしまいますので、ご注意ください。③最も一致する検索結果として、Excelが表示されますので、そのままEnterキーを押せばエクセルが起動されます。 この方法で短縮できる時間は数秒程度ですが、塵も積もれば山となりますので、一年を通せば結構な効率化になるかと思います。是非試してみてください(^_^) 普段はテンプレ作成からマクロVBAまで、Excelに関する様々な作業を引き受けております。「こういうことはできますか?」の確認だけでも大丈夫ですので、是非お気軽にお問い合わせくださいませ。何か解決策がないか、一緒に考えましょう!(^_^)
0
カバー画像

【Excel VBA】中級者?が陥りやすい罠 ソートの仕方は?

閲覧いただきありがとうございます! Excel VBA関連で出品しているさべろくと申します。中級者?が陥りやすい罠について書いていこうと思います。Excel VBAで配列の使い方を覚えて高速化ができるようになると、何でも配列にすれば速くなると思いがちです。ここに罠があります。実は配列での処理にしない方が速いというパターンがあります。それはソートです。シートに配列の値を書き出す。そのとき、値は昇順に並んでいる必要がある。という問題があるとします。このとき方法として大きく分けて2パターン考えられます。【パターン1】 配列の値をシートに書き出してから、SortというVBAの関数を使ってソートする(Excelの機能を用いてソートする)。例.Range("A1:A100").Sort(Key1:=Range("A1"), Order1:=xlAscending)【パターン2】 配列の中身をソートして、ソートした結果をシートに書き出す。さてどちらの方が速いでしょうか?実際に検証した結果を以下に張り付けます。表中の数字は秒数になっています。【検証方法】指定した個数の配列を作成し、配列の中身はランダムの数値を入れます。その後、下記3パターンで実行します。①.シートに配列を書き出した後、Sort関数を用いてソート②.配列をバブルソートした後、シートに書き出す③.配列をクイックソートした後、シートに書き出す計測時間は上記パターンを実行している時間です。ランダムに生成した数値に偏りがあるといけないので、計測は各パターンで5回ずつ実行し、その平均値を表に記載しています。ソートの方法はいくつかありますが
0
カバー画像

プログラミングの基本的な事 その2 コード化

コード化とは、例えば「名前」だけで行った場合●同じ商品で価格が違う場合、商品名だけでは区別がつかなくなってしまいます。●何かの部品の場合、その部品名だけでは機能的な区別、取り付け場所の区別などの詳細を表す事が難しい。●社員名簿であれば、同姓同名の区別がつかない。こうした問題を解決する為に「名前」以外に数字やアルファベットでコードを作って項目に入れる事です。このコード化で必須なのは「ユニーク」であること。つまり唯一無二であることです。重複してはならないのです。これはプログラミングでとても大切な事で、例えば「A」という会社に納品書を作った場合。もし「A」という同名の会社がもう一つあった場合。納品書が同名の別会社の分も作成されてしまう可能性があります。そうなるとまずいですよね。ですから「ユニーク」であることは大切なのです。でも「名前」だけで「ユニーク」が確保できているので「コード」はいらないかも。と思われる場合もあると思います。その時はその時で「ケースバイケース」でいいのではないでしょうか。データの規模が大きくなればなるほど「コード化」は必要になって来ると思います。言い換えればデータの規模が大きくなればなるほど重複の危険性や分類の必要性が増すからです。この「コード化」で面倒なのは「コード」を管理しなければならないことです。1~順に連番を「コード」にする手がありますが、「コード」に意味を持たせる事が出来なくなってしまいます。意味を持たせるとは、例えばお客様コードの最初の「二桁」は都道府県を表すとか、社員名簿であれば、最初の一桁が勤務先事業所にするとかにすると、番号に意味を持たせる事がで
0
カバー画像

プログラミングの基本的な事 その1 データ型

これまで幾つかオリジナルでのVBA作成依頼を扱ってきました。その中で気づいた点をいくつか書きたいと思います。オリジナルで依頼されるお客様は作業のシステム化に前向きでそれなりの知識を持っておられる方が多いように思われます。それでも基本的な知識不足を感じる事があります。基本的な「ひな形」を提供してくださる方もおります。「もう少し基本的な知識があればもっとよいひな形作成できるのに」と思ってしまう時があります。ファイルのひな形がそのようなものです。Excelにおいてデータ格納ファイルは「Sheet」になります。通常のデータ格納のファイル「データベース等」はSheetのように簡単に見る事はできません。そして、各項目にデータ型を指定しなければなりません。ExcelVBAもこの「データ型」を指定しなければなりません。ExcelのSheetは便利なものでデータ型が何であろうと自動で認識してくれます。「文字型」と「数値型」は本来違う型なのですがSheet(セル)で勝手に判断して計算しれくれます。計算できない型は勝手に飛ばして計算しますね。ところが通常のプログラミングで使用されるデータを格納する「データベース」等はそうは行きません。混同しているとエラーになります。その辺の違いをしっかり理解しておくとより良い物が出来るのになあと思ってしまう時があります。プログラム言語によっては「自動」で認識して「データ型」を定義しなくてもよいものが多くなりましたが、この「自動」の裏側では依然として基本的な決まり事は変わっていないことを認識しておいた方がよいのではと思っています。例えば「数量」と「単位」を一つのセルに
0
カバー画像

【上級者向け】Excel VBA ちょっとしたテクニック

閲覧いただきありがとうございます!Excel VBA関連で出品しているさべろくと申します。今回は使えるシーンは限られているけど、知っておくと助かるそんなテクニックについて書いていこうと思います。一応上級者向けと銘打っておりますが、初心者の方も知っておくと後々使える機会もあるかと思いますので是非ご覧ください。唐突ですが、VBAは古い言語です。初出は1993年ですので、29年前からある言語となります。そのため、Python等と比べると色々用意されている関数が少ないです。例えば配列の中身をソートさせるにもPythonならsortと書けばできるのにVBAでは自分で実装してあげる必要があります。そのように既存に用意されている便利なものを使うのではなく、自作するというシーンがExcel VBAで物を作っていると度々あります。これがまたプログラミングの根本的な部分に触れる機会になってExcel VBAの楽しいところなのですが、難しいところでもあります。歴史の長い言語で元からある記事に加えて、昨今のプログラミングブームもあり、Excel VBAの記事も増えてきていることから、例えば先ほど挙げたソートの例なら「excel vba 配列 ソート」とかで検索すればヒットするのでそこまで苦労はないでしょう。ですが、経験上まだ完璧かというと少し足りないなと感じています。例えば、数学の組み合わせの問題というのがあります。10個の色付きボールから4個選んだときの組み合わせを列挙せよ、といった問題です。この場合「excel vba 組み合わせ 列挙」とかで調べるとしましょう。調べると組み合わせを算出する関数を
0
カバー画像

Excel VBA オーバーフローというエラーが出てくるとき

ココナラでExcel VBA関連のサービスをやっているさべろくと申します。閲覧いただきありがとうございます。いきなり本題ですが、Excel VBAで下記エラーが出るときがあります。これは指定したデータ型の範囲を超えた場合に出てくるエラーです。例えばInteger型で変数を宣言した場合は、-32,768~32,767の範囲に収まっていないと上記エラーが出ます。直す方法はもっと大きな範囲を扱える型にすることです。例えばLong型にすれば-2,147,483,648〜2,147,483,647の範囲の数値を扱えます。ここまではよく記事に書かれている内容です。ちょっとだけ変わった事例のお話をします。それはLong型を超えた場合にどうすればいいのか?という話です。仕事でLong型を超えるケースに遭遇しました。数学で扱われる組み合わせを列挙する問題です。例えば、10個のボールから4個選んだときの組み合わせのパターンを列挙しなさいといった問題です。実際には10個から4個選んだ組み合わせの場合は、セルに「1 2 3 4」「1 2 3 5」のように組み合わせを記載していくというものです。下記の通りExcelを用意しました。総数を指定して抜き取り数を指定すると、通り数が算出されます。通り数はExcelの関数であるCOMBINを使って算出しています。実行ボタンを押すと1シートに下記のように表示されます。※これは10通りから3つ選んだときの結果です。総数と抜き取り数を自由に設定できるようにしているため、ここで問題が起きました。通り数がエクセルの1シートのセルの数(約171億)を超えてしまい、書ききれず
0
144 件中 1 - 60
有料ブログの投稿方法はこちら