昇順の並び替えで困っています

このQ&Aのポイント
  • 昇順の並び替えがうまくいかず困っています。
  • 本来T3から下を昇順で並び変えた後、重複した値を削除したいですが、うまくいきません。
  • ダメな点を教えていただけると助かります。
回答を見る
  • ベストアンサー

昇順

失礼します。昇順がうまくいかず困っています。 本来T3から下を昇順で並び変えたのち重複した値を削除したいのですがうまくいきません もしよろしければダメな点を教えていただけないでしょうか?よろしくおねがいします。 Option Explicit Sub test() Dim i As Double Dim x As Double For i = 3 To Cells(Rows.Count, 20).End(xlUp).Row Range(Cells(i, "T"), Cells(i, "T")).Sort Key1:=Range("T2"), Order1:=xlAscending, Header:=xlYes Range(Cells(i, "T"), Cells(i, "T")).RemoveDuplicates Columns:=Array(1), Header:=xlYes Next End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは ループする必要が無いです。 Sub test()   Range("T3", Range("T" & Rows.Count).End(xlUp)).Sort _   Key1:=Range("T3"), Order1:=xlAscending, Header:=xlNo   Range("T3", Range("T" & Rows.Count).End(xlUp)).RemoveDuplicates _   Columns:=1, Header:=xlNo End Sub

関連するQ&A

  • 重複した値を一つ残す VBA

    重複した値を一つだけ残していきたいです。 たとえば リンゴ リンゴ リンゴ とあれば2つリンゴが消えて欲しいです 今のところ重複した値を消す方法しかわからず詰まっています。 なにとぞよろしくおねがいします  Option Explicit Sub test() Dim i As Double Dim x As Double Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Range("T3", Range("T" & Rows.Count).End(xlUp)).Sort Key1:=Range("T3"), Order1:=xlAscending, Header:=xlYes For i = 3 To Cells(Rows.Count, 20).End(xlUp).Row Range(Cells(i, "T"), Cells(i, "T")).RemoveDuplicates Columns:=Array(1), Header:=xlYes Application.Calculate Next End Sub

  • 【Excel】リストボックスにデータを重複せず昇順に表示する方法

    教えてください。 ユーザーフォームにリストボックス(Listbox1)があり、日付が昇順で入力されるようになっています。 ただし、この日付データは重複が多いため重複されないよう表示しようと下記のコードを記述しましたが「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです」と表示されてしまいます。 これを回避し、実行させるためにはどういう風に記述を修正したらよいでしょうか? ================================================================ Private Sub UserForm_Initialize() Dim i As Long For i = 2 To 2000 ListBox1.AddItem Worksheets("データ").Cells(i, 1) Dim myValue As Variant Dim myRng As Range, myCell As Range Set myRng = Worksheets("データ").Cells(i, 1).End(xlUp) myValue = myRng.Value Application.ScreenUpdating = False myRng.Sort Worksheets("データ").Cells(i, 1), xlAscending, Header:=xlYes With ListBox1 .Clear For Each myCell In myRng.Resize(myRng.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible) .AddItem myCell.Value Next .ListIndex = 0 End With Next i ListBox1.ListIndex = 0 End Sub ================================================================

  • マクロBVAに関する質問です

    Sub Macro1() ' ' Macro1 Macro ' ' Range("テーブル1[番号]").Select ActiveSheet.Range("テーブル1[#すべて]").RemoveDuplicates Columns:=1, Header:=xlYes End Sub といった、マクロを作ったのですがActiveSheet.Range("テーブル1[#すべて]").RemoveDuplicates Columns:=1, Header:=xlYesのところでデバックになってしまいます。 なぜデバックとなるのか? また解決策を教えて下さい。宜しくお願い致します。(マクロ超初心者)

  • SORTについて

    お世話になります。 下記構文でソートさせているのですが、 ”台帳”シートをアクティブにしている場合はVBA実行される のですが、別のシートをアクティブにしている場合はデバックに なってしまいます。(実行時エラー’1004’) 別のシートを開いていても下記のソートが実行される様にしたい のですが、どの様したら良いかご教示頂きたく宜しくお願い申し 上げます。         記 Sub 台帳ソート() Dim myrhg As Range Dim myar As Variant Dim i As Long Set myrng = Sheets(\"台帳\").Range(\"a1\").CurrentRegion myar = Array(1, 2, 3) With myrng For i = 0 To UBound(myar) .Sort key1:=Cells(1, myar(i)), Order1:=xlAscending, header:=xlYes Next End With Set myrng = Nothing End Sub

  • SORTについて

    お世話になります。 下記構文でソートさせているのですが、 ”台帳”シートをアクティブにしている場合はVBA実行される のですが、別のシートをアクティブにしている場合はデバックに なってしまいます。(実行時エラー’1004’) 別のシートを開いていても下記のソートが実行される様にしたい のですが、どの様したら良いかご教示頂きたく宜しくお願い申し 上げます。         記 Sub 台帳ソート() Dim myrhg As Range Dim myar As Variant Dim i As Long Set myrng = Sheets("台帳").Range("a1").CurrentRegion myar = Array(1, 2, 3) With myrng For i = 0 To UBound(myar) .Sort key1:=Cells(1, myar(i)), Order1:=xlAscending, header:=xlYes Next End With Set myrng = Nothing End Sub

  • VBAのソートで

    お世話になります。 初歩的な質問なのですが・・。 表のソートをしたいのですが、 表は2行目に見出しがあり3列で100行の構成です。 下記の様な記述で表の範囲をセットするところでエラー がかかってしまうのですが、どうしたらうまくいくでしょうか。 どなたかご教示頂きたく宜しくお願い致します。    記 Sub ソート() Dim myrhg As Range Dim myar As Variant Dim i As Long Sheets("台帳").Range("A1").CurrentRegion.Select Selection.Offset(1, 0).Select Set myrng = Selection.Resize(Selection.Rows.Count - 1).Select myar = Array(1, 2, 3) With myrng For i = 0 To UBound(myar) .Sort key1:=Cells(1, myar(i)), Order1:=xlAscending, header:=xlYes Next End With Set myrng = Nothing End Sub

  • VBA RemoveDuplicatesが動かない

    以下のマクロを実行しても動きません。 RemoveDuplicatesの行でエラーとなります。 メッセージ:アプリケーション定義またはオブジェクト定義のエラーです。 何が間違ってるのでしょう? エクセル2013 Windows8 E列の重複を削除するマクロです。不要なWithを使っているのは、別マクロから切り出したものだからです。 Sub test() Dim Colref As Long, LastRow As Long With Worksheets("Sheet1") Colref = 5 LastRow = Cells(Rows.Count, Colref).End(xlUp).Row Range(.Cells(1, Colref), .Cells(LastRow, Colref)).RemoveDuplicates Columns:=CVar(Colref), Header:=xlNo End With End Sub

  • エクセルマクロのソートについて

    こんにちわ! エクセルマクロのソートについて質問です。 プロシャージャを使ってソート使いまわそうと思うのですが、範囲、並び替えキーを変えたいと思うのですが可能でしょうか? Sub Sort()    Range("A1:c10000").Sort _ Key1:=Range("a1") , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub 一応、動作はしませんが下記のようなイメージで動かしたいです。 Sub Sort() Dim key As String Dim hanni As String key = Range("a1") hanni = Range("A1:c10000") 'セルhanniの範囲のデータをkey列をキーに昇順に並べ替えます hanni.Sort _ Key1:=key _ , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub 可能でしょうか? わかる方おりましたらアドバイスの程お願いします。

  • エクセル並べ替え VBA

    ActiveSheet.UsedRange.Addressで 並べ替えの範囲名を指定することはできないのでしょうか? Sub Sample() Cells(1, 1).AutoFilter ActiveSheet.AutoFilter.Range.Sort Key1:=ActiveSheet.UsedRange.Address, Order1:=xlAscending, Header:=xlYes End Sub を動かすと、実行時エラー1004になってしまいます。 Key1:=Range("A1")にするとうまく行きますが、 キチンと範囲を指定してあげたいのですが、その場合どうすればいいでしょう?

  • エクセルVBA

    よろしくお願いいたします。 エクセルのVBAですが、下記のコードを実行すると処理が遅いです。処理が早くなるコード教えてください。 よろしくお願いいたします。 Sub Macro3() Dim aa As Variant Dim i As Variant Application.ScreenUpdating = False Range("A14:i46").Select aa = ActiveSheet.Name ActiveWorkbook.Worksheets(aa).Sort.SortFields.Clear ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("B15:B46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("C15:C46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(aa).Sort .SetRange Range("A14:i46") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For i = 0 To 31 Cells(15 + i, 7).Select If Selection.Value = 0 Then Selection.EntireRow.Hidden = True End If Next i Range("A1").Select Application.ScreenUpdating = True End Sub

専門家に質問してみよう