excel 重複の削除 バグ

googletag.defineSlot('/21812778492/blog_300x250_common_sidemiddle01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198726712-0').addService(googletag.pubads()); Excel2007以降には、[データ]タブに[重複の削除]というコマンドがあります。 ポップヒントには、以下のように記されています。 重複の削除 重複する行をシートから削除します。 重複する情報をチェックする列を指定できます。 重複する行を削除してくれる機能です。 その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。 var pbjs=pbjs||{}; googletag.defineSlot('/21812778492/blog_728x90_common_overlay_adsence', [728, 90], 'div-gpt-ad-1583302554779-0').addService(googletag.pubads()); Qiita can be used more conveniently after logging in. // fixed01のWORKSが不定期なため共通処理とする Columns:=Arr… エクセルの「重複の削除」機能を解説。今回はダブりチェックの第2弾。重複するデータ(セル)をガツンと削除する方法です。うまく削除できない方に、注意点も書いています。便利な機能なので上手に活用してください。 よく見ると "20% Accent1 1", "20% Accent1 2", "20% Accent1 3" ... といった具合に、元のスタイル名の末尾に数字が付いた別名が延々と並んでいます。これは、Excelファイル間でセルをコピーする際に、コピー元ファイルが持つスタイル設定を自動的にインポートしているためと推測できます。同じスタイル名かつ同じ設定内容ならばマージしているようですが、なにかの加減でマージに失敗すると別名で登録されるため、ユーザ設定がどんどん増殖してゆきます。, この問題を解決するには、スタイルの登録を減らすしかありません。 例えば自社の顧客名簿において、同じ人を二重登録していないか…つまり重複データがないかをチェックし、あったら重複を削除するという作業が必要な場合。, Excelには、こうしたケースに備えてExcel2007以降から「重複の削除」という機能が用意されました。, 今まで何度も、この機能が「重複していないデータまで余計に削除してしまう」というバグ現象を確認しているからです。, 私たちは数多くの企業の作業現場に入り込んでいってExcelに関する相談を受け付けています。, だから現場で何が起きているかを知ることができ、こういうバグが発生するケースにも立ち会うことができてきたのです。, こうした経験から、この「重複の削除」は使うべきではない、という立場を取っています。, 一方、「いや大丈夫だ」という意見から、この機能を相変わらず紹介する方々もいらっしゃいます。, データの重複をなくす作業は、COUNTIF関数とオートフィルタ機能によって重複しているデータを抽出して削除するという、確実な方法があるのです。, その手間を惜しんで、正確に動作するかどうかもわからない機能を教えるのは、一言で言えば「無責任」です。, Excelの「重複の削除」は使っていいのかどうか | 『たった1日で即戦力になるExcelの教科書』著者・吉田拳の原稿執筆下書き帳, Excelの関数や機能をマスターするだけでは意味がない!じゃああとは何が必要なのか…22万部のベストセラーであり日本で一番売れているExcelの本、『たった一日で即戦力になるExcelの教科書』の著者、吉田拳の執筆原稿の下書き帳です。. 今回のようなケースでは、全項目ではなく、「氏名」と「自宅電話番号」の両方が一致していれば重複データだと判断させれば対応できます。, このように、[重複の削除]ダイアログボックスで項目名にチェックをつける際、データがどのように入力されているかでチェックの付け方に工夫が必要になります。 https://gist.github.com/YoshihitoAso/311b0a1d40174e1bfdae, 見つけたマクロのgistをforkして、複数のExcelファイルを一括処理できるように改造してみました。, 削除が終わり、デフォルト設定のみスタイル欄となりました。スッキリして気持ち良いです。, ソフトウェア設計開発者。C/C++をメインにC#, Perl, JavaScript,lua,golangを少々。 Be Cool Usersマガジン--Word,Excel,PowerPointの技, Be Cool Usersマガジン--Word,Excel,PowerPointの技. こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。 皆さんは、vbaで重複データを削除する方法を知っていますか?無駄なデータがあるとデータ分析結果がおかしくなるだけでなく、ファイル自体も重たくなってしまうため重複データは削除する方法を覚えてお … Excelの異なるバージョン間で交互に編集したり、Excelファイル間でセルのコピーを繰り返していると、「セルの書式が多すぎるため、書式を追加できません」とメッセージボックスが出て編集できなくなります。ツールバーのホーム:スタイル欄 で一覧を確認すると、下図のように大量のユーザ設定が登録されています。, なるほど、確かに多すぎる。でも、こんなユーザ設定を登録した覚えはありません! pbjs.que=pbjs.que||[]; Qiita Jobsで転職するともらえる、お祝い金30万円プレゼントキャンペーン実施中!, https://support.microsoft.com/ja-jp/kb/213904, https://gist.github.com/YoshihitoAso/311b0a1d40174e1bfdae, 下記コードを拡張子vbsをつけてファイル保存し、そこへExcelファイルをドラッグドロップすれば、Excelが起動して削除を始めます。, 登録スタイル数によりますが、1ファイルにつき10分以上かかるので時間に余裕があるときに実行しましょう。事前のバックアップも忘れずに。, 実行前にExcelを起動してウィンドウサイズを小さくし、ツールバーを畳んでおくと多少早くなる気がします。, you can read useful information later efficiently. 「氏名」だけで重複かどうかを判断させてしまうと、「同姓同名の別人」が削除されてしまうし、かといって全項目で重複かどうかを判断させてしまうと、削除してほしいデータが削除されない・・・。 googletag.enableServices(); あるExcelブック(ファイル)から別のブックにシートをコピー(または移動)する際、「名前の重複」エラーが出る場合※過去のバージョンのExcelファイルから、新しいバージョンのExcelファイルにシートをコピーする場合などに出ます。 var googletag = googletag || {}; 「重複の削除」で検索すると「重複の削除 バグ」 といった検索予測が表示されますので、何の事だろうと思い、見て、試した結果が下記のような現象でした。環境はExcel2016 Windows10です。 OKWAVEで掲載されていた質問の一部分を使用したデータの例です。 googletag.defineSlot('/21812778492/blog_300x600_common_sidemiddle01_adsense', [300, 600], 'div-gpt-ad-1571293897778-0').addService(googletag.pubads()); Help us understand the problem. Qiita can be used more conveniently after logging in. googletag.pubads().collapseEmptyDivs(); googletag.cmd.push(function() { Selection 選択範囲であるRange("B2:G6")に相当 2. googletag.defineSlot('/21812778492/blog_300x250_common_fixed01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565194485392-0').addService(googletag.pubads()); googletag.cmd = googletag.cmd || []; Excelで重複データを削除する2つの方法を紹介しています。大量のデータから重複データを削除する際、1つずつ手作業で削除していないでしょうか?Excelでは簡単に重複データを削除する方法があります。覚えて作業を効率化しましょう。 googletag.defineSlot('/21812778492/blog_300x250_common_ctc02_adsence', [300, 250], 'div-gpt-ad-1566564559478-0').addService(googletag.pubads()); また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。 重複データの削除の最後では、住所録データを例に挙げ、「同姓同名の別人」は削除されないよう、全項目で重複かどうかを判断させました。. じゃぁ、いつでもどこでも(笑)全項目で重複かどうかを判断させればいいかというとそういうわけではありません。 Copyright © CyberAgent, Inc. All Rights Reserved. そしてデータを入力する時から、「住所は都道府県名から入力する」とか、「住所の英数字は半角で入力する」など、自分なりの約束を作って入力していけば、こういう時にあまり悩まずに済みます。, Officeの使いこなしテクニックをメールでお届け!メールマガジンポータルサイト「まぐまぐ」の殿堂入りメルマガです! 重複データの削除の最後では、住所録データを例に挙げ、「同姓同名の別人」は削除されないよう、全項目で重複かどうかを判断させました。, じゃぁ、いつでもどこでも(笑)全項目で重複かどうかを判断させればいいかというとそういうわけではありません。, 例えば左のような場合、4行目と14行目のデータは同じ人のデータです。 エクセルで重複データをチェックする方法を解説しています。重複しているデータが単一列か2列以上の場合かでケース別にご紹介しています。重複しているデータを削除する前にまずはデータの中から重複しているデータをチェックしましょう。 自分で作成して登録したスタイル(とそのスタイルを設定したセルの書式)もばっさり削除されますが、後から再設定すれば良いと割り切りました。, 先人を求めてネット検索すると、マクロが見つかりました。 Why do not you register as a user and use Qiita more conveniently? googletag.defineSlot('/21812778492/blog_728x90_common_eyecatch01_adsence', [728, 90], 'div-gpt-ad-1566564252373-0').addService(googletag.pubads()); You seem to be reading articles frequently this month. 例えば自社の顧客名簿において、同じ人を二重登録していないか…つまり重複データがないかをチェックし、あったら重複を削除するという作業が必要な場合。 仕事でパソコンを利用している人のほとんどがExcelを利用しています。このExcelですが、様々なエラーが画面に通知されますが、【名前の重複】もその一つです。そこで今回は、シートに【名前の重複】というエラーがでる原因と、削除方法を紹介していきたいと思います。, Excelが重いのにはグラフや数式を大量に入力しているなどの原因があります。今回はExcelが重い原因や対処法、Excelを軽くする方法などをご紹介しますので、ぜひ導入して頂き、気持ちよくExcelが使える環境を構築してください。, 引用: http://www.beinghk.com/column/images/g_07_01.jpg, 仕事でExcelを使っている人がほとんどかと思います。その日の営業日報や見積書を書いたり、経理としてExcelを使うこともあるかと思います。ほとんど全ての会社でExcelは使われていますが、Excelのシートを使っていて様々な問題に遭遇してしまうこともあるかと思います。Excelでシートをコピーしようとしたときに表示されるエラーの一つに【名前の重複】といったよくわからないエラーが出てきたことはないでしょうか。この【名前の重複】というエラーがExcel上で表示されると、【はい】か【いいえ】の選択肢が表示され、【はい】を選択しても何十回も同じ選択を迫られてしまい非常にイライラしてしまいます。そこで今回は、Excelに表示される【名前の重複】というエラーの原因と削除方法について紹介していきたいと思います。, 引用: https://cdn-ssl-devio-img.classmethod.jp/wp-content/uploads/2013/04/excel_name01.png, 引用: https://d3reun7bhr7fny.cloudfront.net/uploads/2014/12/09145802/shutterstock_189624989-480x333.jpg, まず最初にExcelのシートをコピーしようとして、【名前の重複】と表示されたときの原因ですが、これはコピー元となるExcelのシートから、新しいシートにコピーをしようとしたときに起こるエラーで、その原因として言われているのが、コピー元のExcelシートが古いバージョンのExcelで作られたシートで、コピーした先のExcelシートが新しいバージョンのExcelであった場合に起こりやすいエラーと言われたいます。これはバージョンが違うことによって互換性が失われてしまったことが原因で、ほとんどの人が面倒でも【はい】を連打していたかと思います。ですが、この方法で対処しているとデータによっては100回以上も連打する必要があり、非常に面倒で無駄に時間を消費してしまいます。そこで次に簡単にこの【名前の重複】というエラーが出なくなる対処方法を紹介します。, 引用: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRXoqVFUJW5yXAb3GN1R3iErFswduOshIwuujEgXVsEyFG72wnS, 引用: http://net-aegis.com/wp-content/uploads/2015/08/Dollarphotoclub_87240529_edit.jpg, 次にExcelのシートをコピーしようとして、【名前の重複】と表示されたときの削除方法ですが、まずはコピーをしようとしていたExcelのシートを開きます。次に【Ctrl+F3】をクリックします。すると【名前の管理】という画面が表示されます。このときに表示されている名前を全て選択して削除します。最後にその削除したシートを上書き保存します。そうすることによってExcelのシートに表示された【名前の重複】といったエラーは解除されます。, 引用: http://img-cdn.jg.jugem.jp/18d/2281122/20130325_1325027.png, 引用: https://cdn-ssl-devio-img.classmethod.jp/wp-content/uploads/2013/04/excel_name02.png, 上記で名前の管理内を削除してもごく稀に【名前の重複】とエラーが出てしまう場合があります。これは名前の管理でも非表示になってしまっている場合で、この場合はマクロを使うことで今まで非表示されていた名前が出てきますので、この出てきた名前を削除することでエラーは出なくなります。, 引用: https://cdn-ssl-devio-img.classmethod.jp/wp-content/uploads/2013/04/excel_name07-640x530.png, 引用: https://bitwave.showcase-tv.com/wp-content/uploads/2018/03/Microsoft_Excel_Logo-1-768x600.png, いかがでしたでしょうか。今回はExcelのシートにコピーしたデータを保存しようとした際に表示される【名前の重複】というエラーの原因と、その対処方法を紹介してきました。この【名前の重複】というエラーは、基本的には【はい】を連打していればいつの間にか消えてくれるので、ほとんどの人が【名前の重複】とエラーが表示されていても気にせず連打していたかと思います。, 引用: http://karada465b.minibird.jp/wp-content/uploads/2014/02/a1640_000327.jpg, ですが、その方法では無駄に時間を消費するだけでなく、謝って違うボタンをクリックしてしまう恐れもあります。そこで今回紹介した記事を参考にしていただき、Excelのシートにコピーしたデータを保存しようとして、【名前の重複】とエラーが表示されても冷静に対処することで簡単に削除することができますので、これからこのようなエラーが表示されても冷静に対処していただければと思います。. Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。 「データ」リボンの「重複の削除」をクリックデータ範囲選択後、画面上部の「データ」リボンにある「重複の削除」をクリックします。 3.重複条件を選択し、OKをクリックして削除 Why not register and get more from Qiita? 現在はフリーランスエンジニア兼テックライターとして活動中。, ループ処理とRemoveDuplicatesメソッドは、どちらを使えばいいんだろう?. googletag.defineSlot('/21812778492/blog_468x60_common_eyecatch02_adsence', [728, 90], 'div-gpt-ad-1567575393317-0').addService(googletag.pubads()); }); 皆さんは、VBAで重複データを削除する方法を知っていますか?無駄なデータがあるとデータ分析結果がおかしくなるだけでなく、ファイル自体も重たくなってしまうため重複データは削除する方法を覚えておくのがおすすめです!, まず、重複データについて簡単に解説します。Excelで一覧形式のデータを作るとき、次のように同じデータとなっている箇所が重複データです。, No以外のデータが同じデータになっていますよね。なんらかの意図があって同じデータを作っているのであればそのままでもいいのですが、そうでない場合はデータ集計や分析時に困ってしまいますよね。このような場合、重複データを削除する方法を覚えておくと便利です。, 次に、VBAで重複データを削除する方法について解説します。VBAで重複データを削除する方法は、大きく分けて2パターンあります。, 上から順にデータを見ていき、1つ上のデータと同じだった場合に行削除する方法です。言葉だけではわかりづらいので、1件目のデータ・2件目のデータの重複をチェックするデータイメージを用意しました。, 上から順に2つのデータをチェックし、同じデータがあった場合のみ行を削除する流れで、データの行数分処理をループするイメージですね。具体的なイメージを持ってもらうために、サンプルコードを用意しました。, 最初に、「Cells(Rows.Count, 1).End(xlUp).Row」でデータの最終行を取得し、For文でデータの3行目から最終行まで重複データ削除処理をループ処理しています。上の行「Cells(i - 1, 2)」と下の行「Cells(i, 2)」が同じだったときのみ、「Rows(i).Delete」で行削除しています。, 次に、RemoveDuplicatesメソッドを使った重複削除方法について解説します。RemoveDuplicatesメソッドを使って次のように書くことで、簡単に重複削除することができます。, Rangeでセル範囲を「A1:D5」や「B2:L4」のように範囲指定し、RemoveDuplicatesメソッドの引数に重複を確認する列番号を指定することで、重複データを削除できます。, ループ処理のときと同じように「Cells(Rows.Count, 1).End(xlUp).Row」で最終行を取得し、「"A1:D" & maxRow」で最終行までのセル範囲を指定し、RemoveDuplicatesメソッドの「Array(2, 3, 4)」で「名前・得意言語・経験年数」の3つのデータで重複をチェックし、一致したデータを削除しています。, このように、RemoveDuplicatesメソッドを使えば、簡単に重複データを削除することができます。, 結論から言うと、処理速度的にRemoveDuplicatesメソッドを使うのがおすすめです!速度を確認するために、先ほどのデータを1万行に増やして処理速度を確認してみました。, 圧倒的に、RemoveDuplicatesメソッドを使った方が処理が速いですよね。また、処理の行数で見てもRemoveDuplicatesメソッドの方が少なくシンプルなので、RemoveDuplicatesメソッドがおすすめです!, 「Format(Now(), "YYYY/MM/DD HH:MM:SS")」で現在の日付・時刻を確認できるので、それを使って開始時刻・終了時刻を出力して確認しています。処理時間の計測方法を覚えておけば、重たい処理に対処しやすくなるので覚えておくと便利です!, 今回は、VBAで重複データを削除する方法について解説しました。重複データがあるとデータ分析結果が正しく出ないだけでなく、無駄なデータでファイルが重たくなってしまいます。, RemoveDuplicatesメソッドを使えば簡単に速く重複削除できるので、ぜひ使ってみてくださいね!, 当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。 Excel2007以降には、[データ]タブに[重複の削除]というコマンドがあります。 ポップヒントには、以下のように記されています。 重複の削除 重複する行をシートから削除します。 重複する情報をチェックする列を指定できます。 重複する行を削除してくれる機能です。 googletag.pubads().enableSingleRequest(); By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. googletag.pubads().setTargeting('blog_type', 'Tech'); googletag.defineSlot('/21812778492/blog_300x250_common_sidemiddle02_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198822157-0').addService(googletag.pubads()); googletag.defineSlot('/21812778492/blog_300x250_common_fixed01', [[300, 250], [336, 280]], 'div-gpt-ad-1559710191960-0').addService(googletag.pubads()); pbjs.setConfig({bidderTimeout:2000}); You need to log in to use this function. Excelの「重複の削除」は使っていいのかどうか. 最近は、Raspberry Pi で面白いモノを作りたいと思っています。. ですが、4行目のデータの住所は都道府県名から入力されているのに対し、14行目のデータでは都道府県名は省略して入力されています。, 15行目と16行目のデータも同じ人のデータですが、15行目の住所のデータは数字が半角で入力されているのに対し、16行目の住所は数字が全角で入力されています。, こういった場合、全項目で重複かどうかを判断させると、住所のデータが同じではないので、重複と判断されないため、データは削除されません。 What is going on with this article? googletag.defineSlot('/21812778492/blog_300x250_common_ctc01_adsence', [300, 250], 'div-gpt-ad-1566564396953-0').addService(googletag.pubads()); 本題に入る前に、RemoveDuplicatesの一般的な使い方をおさらいしておこう。 これはExcelの標準機能の中にある「データ」>「データツール」>「重複の削除」を実行するメソッドである。 先のプログラムは、選択したセル範囲に対して「重複の削除」を実行し、1列目、2列目、4列目のすべてが同一のレコードを削除するためのものである。 通常はこのように記載すれば動作する。 マクロ実行後 要するに 1. Excelの[データ]タブにある[重複の削除]は、その名の通り、重複データを削除する機能です。1つの列だけでなく、複数の列に含まれるデータを組み合わせて重複を判断できるのが特徴です。重複しているデータはすぐに削除されます。 仕事でパソコンを利用している人のほとんどがExcelを利用しています。このExcelですが、様々なエラーが画面に通知されますが、【名前の重複】もその一つです。そこで今回は、シートに【名前の重複】というエラーがでる原因と、削除方法を紹介していきたいと思います。 下記コードを拡張子vbsをつけてファイル保存し、そこへExcelファイルをドラッグドロップすれば、Excelが起動して削除を始めます。 登録スタイル数によりますが、1ファイルにつき10分以上かかるので時間に余裕があるときに実行しましょう。 googletag.defineSlot('/21812778492/blog_728x90_common_overlay', [728, 90], 'div-gpt-ad-1584694002281-0').addService(googletag.pubads()); (重複したデータが削除されたデータが抽出できました。 スポンサードリンク よねさんのExcelとWordの使い方 | エクセル2010基本講座:目次 | フィルター(データ抽出) |重複データを削除する googletag.defineSlot('/21812778492/blog_300x250_common_sidetop01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565330658303-0').addService(googletag.pubads()); しかしならがら、まとめて削除する手段がなく、ちまちまと一個づつ削除する不毛な作業を強いられます。, https://support.microsoft.com/ja-jp/kb/213904 によれば、「セルの書式が多すぎる」エラーが出るのは、Excel2003なら登録数が4000個、Excel2007以後なら登録数が64000個を超えた場合のようです。となると完全に綺麗にするには何千何万回も削除操作しなければなりません。そんな膨大な手作業は無理!, そこでマクロを使って、デフォルト(ビルトイン)のスタイルのみ残し、他を全部削ってしまうことにします。 侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。, 「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。, 新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。 [ データ ]、 [ 重複の削除] の順にクリックし、 [ 列] のところで、重複する値を削除したい列のチェック ボックスのオン/オフを切り替えます。 たとえば、このワークシートの中では、 [1 月] 列の中には、保持したい価格情報が含まれています。 googletag.defineSlot('/21812778492/blog_300x250_common_fixed02_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198391774-0').addService(googletag.pubads()); 今回はExcelの「重複の削除」機能をVBAで実行するための「RemoveDuplicates」で、引数に配列変数を指定したい場合の使い方を調べてみました。, 先日、Twitterにて以下のような内容の疑問がツイートされていたが、なぜエラーになるのか原因が分からなかった。, 本題に入る前に、RemoveDuplicatesの一般的な使い方をおさらいしておこう。, これはExcelの標準機能の中にある「データ」>「データツール」>「重複の削除」を実行するメソッドである。, 先のプログラムは、選択したセル範囲に対して「重複の削除」を実行し、1列目、2列目、4列目のすべてが同一のレコードを削除するためのものである。, コードを見る限りでは、どちらもArray()を使用したVariantデータを使用しているため、何がダメなのかさっぱりわからない。, 以下、教えて!goo - VBA RemoveDuplicatesが動かない から抜粋, Range(.Cells(1, Colref), .Cells(LastRow, Colref)).RemoveDuplicates Columns:=CVar(Colref), Header:=xlNo, CVar Variant 数値の場合は Double と同じ範囲です。 数値以外の場合は String と同じ範囲です。, MyVar = CVar(MyInt & 000) ' MyVar contains the string, どんな思考をしたらVariant型変数に対して、Variantへ変換するという発想になるんだ?, というわけで、 RemoveDuplicates CVar でGoogle検索♪♪♪, 英語のページはじっくり読んでいないので、もしかしたらこの中にあるのかもしれないが。, 要するにRemoveDuplicatesの実引数が変数となる場合にはCVar()が必須ということのようだ。(訂正((後に()だけで良い事が判明した), こんな重要な話ならネット上に情報が転がっていてもおかしくないのだが、やっぱり見つけられないのは何故なのだろうか。, なんでも、「Option Baseを1に変更するとRemoveDuplicatesでエラーが出る」らしい。, 矢塚の備忘録 - Optional baseとRemoveDuplicatesの不仲, VBAではモジュールの先頭にてOption Base 1を記載することで、配列の要素番号の開始値を0から1に変更することが出来る。※一部のステートメントに限る, 本件のArray()関数は、Option Baseの影響を受ける代表的な関数である。, 対処法としては、ReDim Preserve ~を使って要素番号を0開始にシフトさせる方法が考えられる。, 別解として、Array()でOption Base 1の影響を回避するためによく使われるVBA.Array()を使う方法もある。, この方法は先の記事のリンクにもあった answers.microsoft.comでも紹介されている。, 従って、CVar()を使わなくとも、ただの()でも良いのではないかと思い試した結果、その考えは正解であった。, VBAでは配列変数を実引数に置くと必然的に参照渡しになってしまうが、OKのような事例では呼び出し元に変数が無いため値渡しと同じような状態になる。RemoveDuplicatesはソレを求めているのかもしれない。, 他のExcelに依存した関数でも起きてもおかしくないので、今後は同じエラーが出たときには注意する必要がありそうだ。, ここまで列番号の配列作成にはArray()やVBA.Array()を使うことを前提に話をしたが、実務では動的に作ることもあると思う。, 当初のTwitterでの問いかけでも、動的に配列を作成してエラーが出たためArray()で検証していた。, 以上を踏まえて「選択範囲のすべての列が重複するレコードを削除する」プログラムを作成すると以下のようになる。, 一時期「Excelの重複の削除にはバグがある」という話があったが、2019年前期には「いつのまにか修正されている。」という話を聞いた。, もともとのバグの内容と再現方法、そしてバグと考えられる挙動すべてが修正されたのか、正確には把握できていない。, Dictionaryなら誤動作の心配は無いし自由度が高くて応用が効くが、ソースコードが冗長になる傾向がある。, 一方で、RemoveDuplicatesならRangeに対して直接実行出来るため、ソースコードはシンプルになる。, 昨今(2020年1月)Excelに新たにUNIQUE関数が搭載された。※Office365限定, これと同時に、WorksheetFunction.Unique()も開放されており、こちらも複数列を処理できるので一考の余地があると思う。, ただし、Excel2019までは対応しておらず互換性問題があるので、もう数年は様子見したほうが良い気がする。, 「Split関数で作成した配列がCVar()を使用しても実行時エラー458になる」とのコメントがあった。, 同じように{"1","2"}をArrayで作成する次のようなソースコードでは正常に動作する。, 正確な理由は分からないが、RemoveDuplicatesのColumns引数に変数を指定する方法は分かった。, ただ、意図が読みづらい挙動なので、将来消されるのを防ぐためにもコメントを入れておくほうが良いかもしれない。, つまり、この記事のURLを残しておけば良のだ!(冗談です。リンクフリーですのでご自由にどうぞ), ※後日、このテクニックが役に立つ他の事例が見つかった。思ったより重要な手法のようだ。, 以下のようにすれば、ShapeRangeオブジェクトに任意の複数の図形を格納できる。ShapeRange配下の便利なメソッドも使える。'shpZOrderArrはShape.ZOrderの配列Dim shpRng As ShapeRangeSet shpRng = ActiveSheet.Shapes.Range(CVar(shpZOrderArr))まさか、ここで CVar() にお世話になるとは, なお記事の元ネタは大抵はTwitterで呟いてます。良ければフォローしてあげてください。, 今回はExcel VBAにおける伝家の宝刀。Application.Evaluateメソ…, 今回はVBAのApplication.Runを使用した場合のByRef参照渡しの方…, 「Option Baseを1に変更するとRemoveDuplicatesでエラーが出る」, 'Visual Basic でサポートされていないオートメーションが変数で使用されています。, チャットのEnterキーの挙動を徹底調査してみた。~改行キーと送信キーは統一すべきである~, ExcelにGoogle Spreadsheetを読み込むVBA汎用関数を作ってみた, WinAPIの64bit化で出てくるPtrSafe、LongLong、LongPtrってなんなのさ?, RemoveDuplicatesは変数=外部から変更される恐れのあるメモリの指定を良しとしていない。.

コナラ 実生 盆栽, 影法師 季語, 内山昂輝 ラジオ, 秋 イラスト 手書き フリー, 飛龍 かわいい, 関 ジャニ ∞ 不 人気, 辛辣 反意語, 3年a組 番外編, 他 た ほか 使い分け, 鬼滅 の刃 神楽と耳飾り, 桶 ケロリン, ツイッター 特定のツイート 非表示, 夏 インフルエンザ 2019, サイモン ゲーム, 明細書 請求書 違い, 難解 反対語, 美食探偵 漫画 完結, 吉岡秀隆 ツイッター, ジョン クラシンスキー, 森葉子 ショート, Countif 複数範囲, タンニン 効果, マッチングアプリ ヤリモク メッセージ, パズドラ 碇ゲンドウ 周回, 便利屋 萬屋 飯田市, トレースとは 登山, 日の出 町 地名, 剣客商売 加藤剛 誘拐, 竈門炭治郎 無惨,

コメントを残す