- ベストアンサー
VBAで並び替えの方法とエラーの対処法
papayukaの回答
#1です。 > すべてをA5にすると項目もソートされてしまいます。 header:=xlGuess の xlGuess はタイトルを自動判定してって意味です。 A5がタイトルなら header:=xlYes、データならheader:=xlNo にすれば良いだけです。 > 実行エラー1004同じサイズのセルの結合が必要です。 Test1を行った場合にSelectした範囲内に結合セルがあるのでしょう。 結合セルはソート出来ません。 表の状況がまったく解らないので予想で回答せざるを得ません。 エラーの原因はご自身で判断されるか、詳しい表の状況を説明頂かないと、こちらは見ている訳では無いので。
関連するQ&A
- 下記のマクロの説明(意味)を教えてくださ。
Range("A4").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A5"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlStroke, DataOption1:=xlSortNormal
- ベストアンサー
- Visual Basic
- 記述を簡略化させたい
お世話になります。 下記の記述をスマートにさせたいのですが、ご教示お願いします。 記 Sub 優先順位() Range("A16:Y25").Select Selection.Sort Key1:=Range("Y16"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A43:Y52").Select Selection.Sort Key1:=Range("Y43"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A70:Y79").Select Selection.Sort Key1:=Range("Y70"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A97:Y106").Select Selection.Sort Key1:=Range("Y97"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A16").Select End Sub
- ベストアンサー
- Visual Basic
- EXCEL VBA 並び替えについて
こんばんは。 EXCEL VBAでデータの並び替えを作りましたが、実行すると実行時エラー(1004)となってしまいます。原因を探りましたが分からないため、問題点のご指導をお願いします。 ・1行目はタイトル行で、2行目以降にデータが入っております(現在は200行までデータが入っています)。。 ・A1~T1にタイトルのそれぞれの項目が入っています。 ・D1セルに「商品名のカナ」が入っており、カナで並び替え(昇順)をしたいと思っています。 'データの最終行をEndrowに格納する EndRow = Worksheets("基礎データ").Range("A1").End(xlDown).Row Worksheets("基礎データ").Select Worksheets("基礎データ").Range(Cells(1, 1), Cells(EndRow, 20)).Select Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal プロシージャの一部を抜粋しました。 Selection.Sort Key1~以降の記述は、「マクロの記録」で記録したものを貼り付けました。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- 【至急】VBAについて
現在エクセル2003を使用しています。 VBA初心者です。 -----エクセルの現在の状態----- ・A5からL5までに項目の名称が書いてあります。 (A5に”見積番号” B6に”件名” などと記入されています。) ・データはA6からL5まで記入され下方向にデータは増えて行きます。 (データは見積を完成させるごとに下に増えて行きます。) ・見積番号と件名で検索をかけたいので、一つ組んだものがあります。 Range("A6:L6").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub これです。所謂Ctrl+Fで使用する検索のコードとほぼ同じかと思われます。 ですが、これでは事足りないと上司に言われ質問致しました。 -----今回出来ない部分に関して----- Range("A6:L6").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub こちらのコードを使用すると、きちんと検索はされます。 ですが、オートフィルタの様に 例えば件名のところを絞ると データも同じ件名のものだけを抽出し表示さる様にしてほしいとの事でした。 エクセル内にボタンを作成し、クリックすると検索窓を出現させ条件を記入したら そのエクセルのシート内にその条件と合ったデータを抽出したものを作成したいのです… ※簡単に言うと Ctrl + Fの機能とオートフィルタを開くとオートフィルタオプションの検索窓が 出現しますよね。 それをマクロで組みたいと言った方が分かりやすいでしょうか…?? レスポンスはなるべく早く致します。 皆様の知識をお借りできればと思い 質問させて頂きました。 以上、宜しくお願い致します。
- 締切済み
- Excel(エクセル)
- 【至急】VBAについて
現在エクセル2003を使用しています。 VBA初心者です。 -----エクセルの現在の状態----- ・A5からL5までに項目の名称が書いてあります。 (A5に”見積番号” B6に”件名” などと記入されています。) ・データはA6からL5まで記入され下方向にデータは増えて行きます。 (データは見積を完成させるごとに下に増えて行きます。) ・見積番号と件名で検索をかけたいので、一つ組んだものがあります。 Range("A6:L6").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub これです。所謂Ctrl+Fで使用する検索のコードとほぼ同じかと思われます。 ですが、これでは事足りないと上司に言われ質問致しました。 -----今回出来ない部分に関して----- Range("A6:L6").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub こちらのコードを使用すると、きちんと検索はされます。 ですが、オートフィルタの様に 例えば件名のところを絞ると データも同じ件名のものだけを抽出し表示さる様にしてほしいとの事でした。 エクセル内にボタンを作成し、クリックすると検索窓を出現させ条件を記入したら そのエクセルのシート内にその条件と合ったデータを抽出したものを作成したいのです… ※簡単に言うと Ctrl + Fの機能とオートフィルタの機能の いいとこどりしてほしいって事なんですよね…笑 レスポンスはなるべく早く致します。 皆様の知識をお借りできればと思い 質問させて頂きました。 以上、宜しくお願い致します。
- ベストアンサー
- その他(ビジネス・キャリア)
- VBAでのエラー(新しいマクロの記録)
新しいマクロの記録で、work1にてソート等を行って、 新しいマクロ(ソート等)を作成しました。 このマクロは単体で正常に動作するのですが、 sheet1の別のマクロにカット&ペーストで追加し、 動作させたところエラーになってしまいました。 パス的な問題だと思いますが、いまいち理解できません。 以下、ソートの中身 Sheets("work1").Select Columns("A:H").Select Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _ , Order2:=xlAscending, Key3:=Range("F2"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _ xlSortNormal, DataOption3:=xlSortNormal
- 締切済み
- オフィス系ソフト
- VBA 並び替え
たびたびお世話になります 選択範囲の並べ替えを行いたく こちらで教わった方法で セル位置の取得を行い Set r = Columns("A").Find("b1", lookat:=xlWhole, After:=Range("A" & Rows.Count)) Set rr = Columns("A").Find("bm123-1", After:=r, Searchdirection:=2) その取得した位置を元に並べ替えを行いたい 範囲選択をしています Range(r, rr.Offset(, 14)).Select その後並び替えを実施したいのですが Selection.Sort Key1:=Range(r.Offset(, 14)) この様にしてみましたが 実行時エラー1004が返されてしまいます どのようにすれば 並び替えができるのでしょうか よろしくお願いします
- 締切済み
- オフィス系ソフト
- VBA 並び替え
たびたびお世話になります 選択範囲の並べ替えを行いたく こちらで教わった方法で セル位置の取得を行い Set r = Columns(\"A\").Find(\"b1\", lookat:=xlWhole, After:=Range(\"A\" & Rows.Count)) Set rr = Columns(\"A\").Find(\"bm123-1\", After:=r, Searchdirection:=2) その取得した位置を元に並べ替えを行いたい 範囲選択をしています Range(r, rr.Offset(, 14)).Select その後並び替えを実施したいのですが Selection.Sort Key1:=Range(r.Offset(, 14)) この様にしてみましたが 実行時エラー1004が返されてしまいます どのようにすれば 並び替えができるのでしょうか よろしくお願いします
- ベストアンサー
- オフィス系ソフト
- ExcelのVBAです。
先日お答えいただいたVBAなんですが、 Sub Macro1() Sheets("Sheet1").Select Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("Sheet3").Select Range("A1").Select ActiveSheet.Paste Selection.End(xlDown).Select Application.CutCopyMode = False Do Selection.Insert Shift:=xlDown Selection.End(xlUp).Select Loop Until ActiveCell.Address = "$A$1" End Sub というのを使用させて頂いてます。 これを、コピー先のものを上書きせずに、コピーされたものがあれば表示させるといった風に出来ないでしょうか? 例 A A 1 a 1 2 b → 2あ 3 c 3 右から左に一行間隔で別シートに表示させたいのですが、 A 1 a 2 あ 3 b 4 5 b という結果にしたいのです。 拙い文章で申し訳ないのですが、教えて頂きたいです。
- ベストアンサー
- その他MS Office製品
- VBA 列の並べ替えについて
以下のようなコードを考えています。 (1)セルA2からO10を選択する。 (2)最優先するキーをD列として(昇順)、(1)を並べ替える。 (3)印刷する。 (4)(1)の並びに戻す。((2)で並べ替えする前の状態にする) マクロ記録から以下のコードは分かりましたが、続きが分かりません。よろしくお願いします。 Sub test() Range("A2:O10").Select Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, _ Header:=xlGuess ,OrderCustom:=1,Orientation:=xlTopToBottom,_ SortMethod:=xlPinYin Selection.PrintOut Copies:=1, Collate:=True End Sub
- ベストアンサー
- Visual Basic
お礼
不出来ですみません。 説明不足ですよね。 予測で答え頂いているのに、とても的を得てます。 見て頂いてるかのようです。 とてもわかりやすいです。 ありがとうございました。