ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

Excel2003を使っています。
【例】
A1:N530の表の中の一部分D1:I530範囲(6列で530行)部分のみを
列単位で一括で並べ替えしたいと思っております。
D1:I530範囲には6列に23、96、11、106、72、49といったように530行全てランダムに数値が入っております。これを各行毎に全て左から昇順に530行分一括並べ替えしたいということでございます。
エクセル機能の「データ」→「並べ替え」→「現在選択する範囲を並べ替える」→「オプション」→「列単位」を指定して列単位に並べ替えは出来たのですが1行ずつしかソート出来ません。
このやり方では530回並べ替え作業をすることになり、時間的に余裕がないのでこの場合にExcel2003の機能で一括で530行分を列単位でもって左から並べ替えをする方法があるでしょうか?
ちなみにExcel2007もまだ使ったことないですが所持しています。
仕事上緊急でご質問させていただいております。是非助けてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>セル背景色も一緒にソート移動されているかなと思った・・・・・


下記マクロを試してください。

Sub test1()
Dim r As Range
Dim srng As Range

Set srng = Range("D1:D530")
For Each r In srng
'列単位昇順並べ替え
r.Resize(, 6).Sort Key1:=r, _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
Next
End Sub
    • good
    • 2
この回答へのお礼

一瞬で解決いたしました。
本当にありがとうございました。
まさかマクロでの御指導が来るとは想像もしていなかったですが、これを機会に自身もマクロの勉強努力いたします。

お礼日時:2009/09/14 15:40

   D  E  F  G  H  I  …  O  P  Q  R  S  T


1   23  96  11 106  72  49 …  11  23  49  72  96 106
2  340 490 351 216 423 477 … 216 340 351 423 477 490
3  239 211 224 448 155 432 … 155 211 224 239 432 448
   …  …  …  …  …  … …  …  …  …  …  …  …
528 423 482 221 491  21 239 …  21 221 239 423 482 491
529 125 334 159 436 185  73 …  73 125 159 185 334 436
530 330  62 438 132 291 448 …  62 132 291 330 438 448

1.セル O1 に次式を入力して、これを右方に5列ドラッグ&ペースト
2.範囲 O1:T1 を下方にズズーッとドラッグ&ペースト
  (上表はその結果を示している)
3.そのままの状態で、[コピー]した後で、そのまンま[値の貼り付け]
4.そのままの状態で、Ctrl+Xキーを「エイヤッ!」と叩き付け
5.セル D1 を選択して、Ctrl+Vキーを「エイヤッ!」と叩き付け
    • good
    • 0

一例です。


(1)データシートをsheet1、抽出シートをsheet2として、sheet2のA1に
=SMALL(Sheet1!$D1:$I1,COLUMN(A1))として右方向に6列分コピー
(2)sheet2のA1:F1を選択→下方向に530行分コピー
(3)sheet2の並び替え範囲を選択、コピー→データシートのD1を選択→形式を選択して貼り付け→値を選択→OK

この回答への補足

大変ありがとうございました。
ものすごく参考になり実践してみました。
こちらの関数で並べ替えが出来ました!
一転、補足し漏れておりました問題もございました。
数値データは=SMALL(Sheet1!$D1:$I1,COLUMN(A1))関数で並べ替えられましたが、実はこのデータ類には決められた数字に対して決められたセル色が複数色に渡り全ての数字に塗られております。セル背景色も一緒にソート移動されているかなと思ったのですがソートした時点でセル色だけ各セルバラバラになってしまいました。
解決出来るでしょうか?
助けてください。よろしくお願い申し上げます。

補足日時:2009/09/14 13:03
    • good
    • 2

エクセル2003ですがD列からI列を選択して「データ」から「並べ替え」で最優先されるキーに「列D」を選び「昇順」でDからI列のデータは昇順に並びますね。

    • good
    • 3

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL で複数行を1単位としてソートかけたいのですが

EXCEL で複数行を1単位としてソートかけたいのですが
ご存知の方教えてください。

例えば

第8号
  安部なつみ
  東京都○○区
  090-1234-5678
第3号
  井川遥
  千葉県ちば市○○町
  080-1234-5678
第4号
  上戸綾
  群馬県○○市
  090-9876-5432

こんな感じで 4行1単位のデータを号でソートできませんか?

よろしくお願いします

Aベストアンサー

補助列を使用して、補助列を基準に並べ替える方法で、

第8号 が A1 として 空いている列の1行目へ
=OFFSET(A$1,(INT(ROW(A4)/4)-1)*4,)&"-"&MOD(ROW(A4),4)+1 を、オートフィルで必要分下へ。

第8号 が A3 としたら 空いている列の3行目へ
=OFFSET(A$3,(INT(ROW(A4)/4)-1)*4,)&"-"&MOD(ROW(A4),4)+1 を、オートフィルで必要分下へ。

第8号-1,第8号-2,第8号-3,第8号-4,第3号-1,第3号-2,第3号-3,第3号-4・・・と補助列に表示されます。(数式を、値の貼り付けで削除した方が良いと思います)

Qエクセルで2行まとめて並び替えするには?

このような8列あるのデータの場合。

・yahoo! Japan
http://www.yahoo.co.jp/index.html
・Google検索
http://www.google.com/intl/ja/
・Livedoorニュース
http://news.livedoor.com/
・Infoseek
http://www.infoseek.co.jp/

で、普通に昇順並び替えをすると、サイト名が全部上に来て
URLがまとめて下にいっていまうのですが、「サイト名+URL」
2行をワンセットにして並び替えをするには、どうすれば良いですか?

Aベストアンサー

私ならこんな感じでやります。(もっとスマートな方法もあるかも)
となりに作業用の列を2つ作ります。
(添付図ではC列・D列)

以下、次の要領で実行してみてください。
(1) C3セルには 「=B3」、C4セルにも「=B3」と入力します。
(2) C3:C4を選択し、オートフィルでC10まで入力します。
(3) D3セルには 「1」、C4セルには「2」と入力します。
(4) (2)と同様にD3:D4を選択し、オートフィルでD10まで入力します。
(5) B3:D10までを選択し、「データ」-「並び替え」を選択します。
(6) データ範囲の先頭行をデータとチェックし、「最優先されるキー」にC列を選択します
(7) 「2番目に優先されるキー」にD列を選択して「OK」をクリックします
(8) 並び替えが終わるので、C列・D列は削除します

QExcelで2行単位のソートの出来る方法があれば教えてください。

Excelはとっても便利ですが、データの並び替え・フィルタ処理をするには、1行単位で行うようです。
項目が多い場合、1行単位でデータを記入すると横(若しくは縦)に相当広がり入力が大変不便です。
そこで2行単位で項目を設定して入力しますと約半分の長さになり、入力もしやすくなります。

そこでご質問ですが、このような2行単位でのデータの並び替え、又はフィルタを使う場合、1行単位でソートされてしまいデータがめちゃめちゃになってしまいます。

どなたか、もしExcelでデータの並び替え、又はフィルタを行う場合、2行単位で出来る方法をご存知でしたら教えて頂けないでしょうか。
当方、ちなみにExcelにおきましては、簡単なマクロ処理などを行う知識ぐらいです。
Excel VBA につきましては、ボタン等の設定程度です。
以上、よろしくお願いします。

Aベストアンサー

【サンプルデータ】

   A  B  C
1  22  AA  AA
2  AA  AA  AA
3  11  BB  BB
4  BB  BB  BB

【手順】

1. 作業列D列に連番を振る
2. 次の計算式を入力(A1,A3をキーにしてソートする場合)
  E1 =A1 , E2 =D1
  これで、E1:E2を選択し、データ終端までオートフィルでコピー
3. E列をコピーして、値で貼り付け

以上で次のような表になります。


   A  B  C  D  E
1  22  AA  AA  1  22
2  AA  AA  AA  2  22
3  11  BB  BB  3  11
4  BB  BB  BB  4  11


4. A1:E4を選択し、一番目のキーをE列、二番目のキーをD列でソート

これで、

   A  B  C  D  E
1  11  BB  BB  3  11
2  BB  BB  BB  4  11
3  22  AA  AA  1  22
4  AA  AA  AA  2  22

このようになりますので、作業列を削除します。
、、はずしてますか?

【サンプルデータ】

   A  B  C
1  22  AA  AA
2  AA  AA  AA
3  11  BB  BB
4  BB  BB  BB

【手順】

1. 作業列D列に連番を振る
2. 次の計算式を入力(A1,A3をキーにしてソートする場合)
  E1 =A1 , E2 =D1
  これで、E1:E2を選択し、データ終端までオートフィルでコピー
3. E列をコピーして、値で貼り付け

以上で次のような表になります。


   A  B  C  D  E
1  22  AA  AA  1  22
2  AA  AA...続きを読む

QExcelで隣のセルと同じ内容に列を並べ替える方法

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずすみません。

例えば、

A|E *****
B|C *****
C|D *****
D|A *****
E|B *****

このような感じです。*はそれぞれの人特有のデータなので、ABCDE順に並べ替えても引き継がせたいデータです。

ECDABの隣にすでにあるABCDEの氏名(漢字)のデータをコピーし、
ECDABをABCDEの順番に並べ替えたいのです。


少しわかりにくいかもしれませんが、
もし何か良い方法ありましたら、お教えいただけますと幸いです。
よろしくお願い致します。

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずす...続きを読む

Aベストアンサー

例えばシート1のA2セルから下方にはECDABと氏名が並び横の列にはそれぞれの人のデータが入力されているとします。
そこでシート2には並び変えたい氏名の順序でA2セルから下方にABCEと入力します。
シート2のB2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(COUNTIF(Sheet1!$A:$A,$A2),IF(VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)="","",VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)),"")

その後にシート2全体を選択してから右クリックして「コピー」し、その後にシート2のA1セルにカーソルを移して右クリックし、「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。

Qエクセルで2列以上のものを同時に並び替えするには

エクセルで下記のようなデーターがあるとします。

1 A  G  
  B  H
2 C  I  ○
  D  J
3 E  K
  F  L
このようにひとつの項目に2行づつあるものに対して、最後に○をつけたものを先頭に2行そのまま一気に並び替えるにはどのようにすればよろしいでしょうか?要するに

2 C  I  ○
  D  J
1 A  G  
  B  H
3 E  K
  F  L
このようにしたいです。
よろしくお願いいたします。

Aベストアンサー

こんばんは。

一応、現在は、2列ごとの並べ替えをするものですが、AA1から右をテンポリーセルとしていますから、もし、そこに何かあるようでしたら、どこか適当な場所にしてください。

'標準モジュール推奨
Sub DoubleRowsSort()
'二行を1行として並べ替えをするマクロ
  Dim rng As Range
  Dim mRow As Integer
  Dim mCol As Integer
  Dim Ar() As Variant
  Dim Ar2() As Variant
  Dim c As Variant
  Dim r As Variant
  Dim i As Integer
  Dim k As Integer
 
  Set rng = Range("A1").CurrentRegion
  mRow = rng.Rows.Count
  mCol = rng.Columns.Count
  ReDim Ar(1 To mRow / 2, 1 To mCol * 2)
  For Each c In Range("A1").CurrentRegion
   i = i + 1
   Ar(Int((i - 1) / (mCol * 2)) + 1, (i - 1) Mod mCol * 2 + 1) = c.Value
  Next c
  Application.ScreenUpdating = False
 'テンポラリセル領域
  With Range("AA1").Resize(mRow / 2, mCol * 2)
   .Value = Ar()
   
   '並べ替え 4列目(D)
   .Sort Key1:=.Range("D1"), Order1:=xlAscending, Header:=xlNo, _
   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
   ReDim Ar2(1 To mRow, 1 To mCol)
   For Each r In .Cells
     k = k + 1
     Ar2(Int((k - 1) / mCol) + 1, (k - 1) Mod mCol + 1) = r.Value
   Next
   .ClearContents
  End With
  Application.ScreenUpdating = True
 
  rng.Value = Ar2()
  Set rng = Nothing
End Sub

こんばんは。

一応、現在は、2列ごとの並べ替えをするものですが、AA1から右をテンポリーセルとしていますから、もし、そこに何かあるようでしたら、どこか適当な場所にしてください。

'標準モジュール推奨
Sub DoubleRowsSort()
'二行を1行として並べ替えをするマクロ
  Dim rng As Range
  Dim mRow As Integer
  Dim mCol As Integer
  Dim Ar() As Variant
  Dim Ar2() As Variant
  Dim c As Variant
  Dim r As Variant
  Dim i As Integer
  Dim k As Integer
 
  Set rng ...続きを読む

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで1列に500行並んだデータを5列毎に改行

エクセル2000で、A1~A500までデータが縦並びに入力されています。

これを5列毎に改行して、横並びのデータに加工したいのですが、何か方法ありますか?

図解すると、、


A1
A2
A3
A4
A5
A6
A7


A500

のデータを

A1 A2 A3 A4 A5
A6 A7 A8 A9 A10
・・・・・・
A496 A497 A498 A499 A500



したいのです。

何かよい方法ありましたらお教え願います。

Aベストアンサー

'直接シートをいじるのでコピーをしてから試してみてください。
Sub Macro1()
COUNTER = 0
For INP = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
COUNTER = COUNTER + 1
Range("A" & INP & ":A" & INP + 4).Copy
Range("B" & COUNTER).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
Next INP
Range("A1").EntireColumn.Delete
End Sub

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング