人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelで、添付画像のように、配置を変えたいです。

A列の数字に該当する行へ移動させたいです。(該当がないところは歯抜けをつくる感じです。)

A列の数値はユニークで昇順で並んでいます。

実際には数万レコードあります。
Excelだけでやりくりできると嬉しいです。

どうぞよろしくお願い致します。

1335438524
●拡大する

●質問者: yoshifuku
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hokuraku
●50ポイント

力技で美しくないですが…。
※図はoffice2000なのでお持ちのものと見た目が違う可能性があります。

1A列の最後の数字(図で言うならば10)の下に、1,2,3…と最大値?1まで数字を並べる。オートフィルを使うと便利。f:id:hokuraku:20120426234931j:image
2全体を選択してA列で昇順に並び替えるf:id:hokuraku:20120426234932j:image
3A列の前に1列挿入して、新A2に=if(B2=B1,1,0)の式を入れる。同じものを際下段までコピー。これもオートフィルで。f:id:hokuraku:20120426234933j:image
41行目にオートフィルタを設定し、C列を空白セルのみでフィルタf:id:hokuraku:20120426234934j:image
5さらにA列を「1」でフィルタf:id:hokuraku:20120426234935j:image
6フィルタ後の2行目から下の行を削除し、A列、C列のフィルタを解除f:id:hokuraku:20120426234936j:image
7A列を削除。最後に1行目だけずれてないか確認してください。f:id:hokuraku:20120426234937j:image

hokurakuさんのコメント
失礼、歯抜けにするんでしたね。 7のあとB列を空白のみでフィルタをかけ、A列を選択しデリートキーでクリア、B列のフィルタを解除すればできあがりです。

2 ● Mook
●50ポイント

マクロを使って新規シートに展開する例です。
A列が数値でなかったり、行の有効範囲外の場合はコピー対象外になります。

Sub MoveToNumRow()
 Dim srcWS As Worksheet
 Set srcWS = ActiveSheet
 srcWS.Copy
 
 Dim dstWS As Worksheet
 Set dstWS = ActiveSheet
 dstWS.Cells.Clear
 
 Dim lastRow As Long
 lastRow = srcWS.Cells(Rows.Count, "A").End(xlUp).Row
 Dim mRow As Long
 Dim r As Long
 For r = 1 To lastRow
 mRow = CLng(srcWS.Cells(r, "A").Value)
 If mRow >= 1 And mRow <= Rows.Count Then
 srcWS.Rows(r).Copy Destination:=dstWS.Rows(mRow)
 End If
 Next
End Sub
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ