[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白セルを含む並べ替えについて』(ワーキングママ)
データを並べ替える際、空白のセルがあるとうまく並べ替えられません。 たとえば
受付No 受付日 内容 色 1 7/3 エアコン 白 グレー 2 7/4 冷蔵庫 白 ピンク ベージュ 3 7/5 エアコン ベージュ
こういったデータの場合、「内容」をキーにして並べ替えると
グレー ピンク ベージュ 1 7/3 エアコン 白 3 7/5 エアコン ベージュ 2 7/4 冷蔵庫 白 となってしまいます。
1 7/3 エアコン 白 グレー 3 7/5 エアコン ベージュ 2 7/4 冷蔵庫 白 ピンク ベージュ と並べ替えるにはどうしたらよいでしょうか? 宜しくお願いします。 エクセルバージョン:Excel2000、OSバージョン:Windows2000です。
1行ずつ空白なくデータを入れないと、例えば元表2つめのデータ、色グレーのものが
受付bP、7/3受付日、エアコンの色を指しているってことがエクセルには判断できないです。
全行データを入れて、見た目を上記のようにするなら、条件付き書式で重複するデータ
のフォント色を白にしてしまうのではいかがでしょう?
A B C D
1 受付No 受付日 内容 色
2 1 7月3日 エアコン 白
3 1 7月3日 エアコン グレー
4 2 7月4日 冷蔵庫 白
5 2 7月4日 冷蔵庫 ピンク
6 2 7月4日 冷蔵庫 ベージュ
7 3 7月5日 エアコン ベージュ
A2からC7を範囲選択して、メニューバーから 書式>条件付き書式とすすみ、
条件を セルの値が となっているのを 数式が に変更。
右側のボックスに =AND(A2=A1,$A2=$A1) と入力。
書式ボタンをクリックして、フォントの色を白に変更してOK、OK。
お望み通り、ではないんですけど^^; (かなれっと)
VBAで 範囲をは必ず表題の行から指定してください。
Sub test()
Dim a, rng As Range, n As Long
On Error GoTo Last
Set rng = Application.InputBox("範囲を選択",type:=8)
If Not rng Is Nothing Then Exit Sub
On Error GoTo 0
a = rng.Value
Redim Preserve a(1 To rng.Rows.Count, 1 To rng.Columns.Count + 1)
For i = 2 To UBound(a,1)
If IsEmpty(a(i,2)) Then
n = 0
Do While IsEmpty(a(i+n,2))
a(i+n,UBound(a,2)) = a(i-1,2) & ";" & n
n = n + 1
Loop
End If
Next
VSortMA a, 2, UBound(a,1), UBound(a,2)
rng.Value = a
Erase a
Last:
End Sub
Private Sub VSortMA(ary, LB, UB, ref)
Dim M As Variant, temp i As Long, ii As Long, iii As Long
i = UB : ii = LB
M = ary(Int((LB + UB) / 2), ref)
Do While ii <= i
Do While ary(ii,ref) < M
ii = ii + 1
Loop
Do While ary(i, ref) > M
i = i - 1
Loop
If ii <= i Then
For iii = LBound(ary,2) To UBound(ary,2)
temp = ary(ii,iii) : ary(ii,iii) = ary(i,iii) : ary(i,iii) = temp
Next
ii = ii + 1 : i = i -1
End If
Loop
If LB < i Then VSortMA ary, LB, i, ref
If ii < UB Then VSortMA ary, ii, UB, ref
End Sub
(seiya)
空白セルを埋めたり、空白に 書き換えるという方法は比較的に簡単な マクロで書けると思いますので、その 両者を組み合わせるか、別々に実行する にでもいいでしょう。(夕焼)
かなれっとさんが書かれているように、データを全て埋める方法です。
[A] [B] [C] [D] [ 1] 受付No 受付日 内容 色 [ 2] 1 7月3日 エアコン 白 [ 3] グレー [ 4] 2 7月4日 冷蔵庫 白 [ 5] ピンク [ 6] ベージュ [ 7] 3 7月5日 エアコン ベージュ
上記のようなセル配置だとしたとき、C1を選択して、データ>フィルタ>オートフィルタ 出来たオートフィルタのC列を選択して、空白セルでフィルタ C3から下を選択した状態で、=C2 と入力し、Ctrlキー押しながらEnterキーで確定
これで空白セルが埋まりますので、 再度C列のフィルタを全て表示させて、C列で並び替え
(川野鮎太郎)
ただ、並べ替えた後、また空白に戻す方法は分かりません・・。
他の皆さんのアドバイスも確認中です。
色々教えて頂き、ありがとうございました。
数式を入れたC列全体を選択して、編集>ジャンプ>セル選択>数式にチェックして OK そのままDeleteで消去できます。
(川野鮎太郎)
『これで空白セルが埋まりますので、 再度C列のフィルタを全て表示させて、C列で並び替え』
これをすると、参照したまま並べ替えるので、
数式になっているところは、変わってしまいますよね??
なんらかの方法があれば教えてください
YK
数式を入れた後にその列をコピーして同じところに値だけ貼り付け。 これで数式は値になります。 BJ
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.