https://oshiete.goo.ne.jp/qa/9016851.html
このリンクの質問の解答にあるマクロを使用しようとしたのですが、全く同じリストを作って動かしてみてもエラーで希望した結果が得られません。
エラーコードは「400」というものが出ます。
このコードの修正でもいいですし、全く別のマクロでもなんでもいいので、解決策がわかる方ぜひ教えてください。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
>今回私が処理したいデータについてはA列がユニークキーとなり、このマクロの仕様で問題有りません。
この前提で作ってます。最大列をE列にしています。
Sheet2の2行目以降へ設定します。(1行目の見出しはあなたが作成しておいてください)
標準モジュールに登録してください。
Option Explicit
Public Sub まとめ()
Const MaxCol As Long = 5 '最大列 E列
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim dicT As Object
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim wcol As Long
Dim key As String
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
maxrow1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row 'sheet1 最終行を求める
sh2.Rows("2:" & Rows.Count).ClearContents '2行目以降クリア
maxrow2 = 2
For row1 = 2 To maxrow1
key = sh1.Cells(row1, 1).Value
If dicT.exists(key) = False Then
row2 = maxrow2
sh2.Cells(row2, 1).Resize(, 5).Value = sh1.Cells(row1, 1).Resize(, 5).Value
dicT(key) = maxrow2
maxrow2 = maxrow2 + 1
Else
row2 = dicT(key)
For wcol = 2 To MaxCol
If sh1.Cells(row1, wcol) <> "" Then
sh2.Cells(row2, wcol) = sh1.Cells(row1, wcol)
End If
Next
End If
Next
MsgBox ("完了")
End Sub
ありがとうございます!
エラーもなく希望の書式が作成できました!
こちらを参考に、実際のデータを編集していきます。
本当に助かりました!
No.3
- 回答日時:
こんにちは
ご提示のマクロを試してみましたが、当方の環境ではエラーは出ませんね。
(エクセル2019です)
ロジック的に「これで良いのかな」という疑問はありますが・・
(異なるデータがあっても、最初のものだけが採用され他は捨てられる)
エラー発生の原因はいろいろあるようですので、以下あたりを試してみてください。
https://ja.101-help.com/c382426305-vba-error-400 …
https://plaza.rakuten.co.jp/mscrtf/diary/2013031 …
No.2
- 回答日時:
こちらで、提示された画像通りのデータをSheet1に作成し、
マクロを実行すると添付図のような結果が得られました。
マクロ自体の問題ではなく、環境の問題と思われます。
(当方 excel2019です)
vba エラー 400 で検索すると
いくつかヒットしますが、原因の特定ができません。
https://search.yahoo.co.jp/search?p=vba+400+%E3% …
他のマクロは問題なく動作しているのでしょうか?
又、このマクロですが、名前(A列)をユニークキーとして使用しています。
そのため、2行目の田中の住所(E3)に北海道と記入すると
表示結果は、
田中 タナカ 90 123 北海道
となり、新潟の住所はなくなってしまいます。
上記の仕様で良いならば、エラー400を修正すれば良いかもしれませんが、
上記の仕様で都合がわるいなら、このマクロは使えません。
あなたの環境でA列はユニークキーとなるのでしょうか。
他にA列と組み合わせればユニークとなるものがあるのでしょうか。
まず、どのようにしてユニークをなるものを決めるかが必要かと考えます。
環境はexcel2016です。
他のマクロは問題なく作動しています。
また、今回私が処理したいデータについてはA列がユニークキーとなり、このマクロの仕様で問題有りません。
No.1
- 回答日時:
たぶんバージョン違いによるメソッドやオブジェクトの使い方の差異によるものでしょう。
2015年に回答されていますので、おそらく Excel2013 向けかと思われます。
バージョンに依存する命令ってそんなになかったはずですが、
自分はその点については詳しくないためピンポイントなアドバイスはできません。ごめんなさい。
並べ替えをして対処する方法が併せて回答されていますので、それを試すことを薦めます。
例え ”50万行分のデータ” があったとしてもです。
今のパソコンは2015年当時よりも処理能力が上がっています。
現実的ではないなんてことはありません。
・・・
(´・ω・`) 1回しか使わないような処理のためのマクロ作成に時間をかけるのはどうかと思うんだ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) エクセルの表でダブりを解消する方法を、教えてください。 5 2023/04/12 12:11
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
ExcelのVBA。public変数の値が...
-
ソース内の行末に\\
-
ピボットテーブルでの毎回可変...
-
特定文字のある行の前に空白行...
-
ExcelVBAでPDFを閉じるソース
-
マクロの連続実行
-
TERA TERMを隠す方法
-
エクセルに張り付けた写真のフ...
-
VBA初心者 Ctrl+での操作、ボタ...
-
TeraTermマクロの文字列結合
-
エクセルのマクロについて教え...
-
エクセル マクロ 指定日の指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報
行数としては1万行くらいあります。
1回だけでなく、少なくとも月に一度行いたいと思っています。
(会社のソフトから出力されるエクセルデータを変換したいため。そもそも出てくるデータの書式を変更するのは不可能です。)
マクロではなく関数でやってみましたが、私が見つけたやり方だと一度再計算するのに50分程度かかるようになってしまい現実的ではなかったためマクロ一発でできるならそれがいいと思った次第です。
環境はexcel2016です。
他のマクロは問題なく作動しています。
また、今回私が処理したいデータについてはA列がユニークキーとなり、このマクロの仕様で問題有りません。
excel2013の別のPCでも試してみましたが、同じエラーが出ました。