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

エクセルの質問です。
1ね
2うし
3とら
4う
5たつ
6み
7いぬ
8ひつじ
9さる
10とり
11いぬ
12い

とデータがありまして、ひとつ飛ばし(例)1-3-5-7-9
はできたのですが、これを下記のようにソートすることはできるでしょうか。

1-3-5-6-8-10-11-12

つまり三番目と4番目、7番目と8番目のみがくっついているように、別の列に抽出するマクロが書きたいのです。
よろしくお願いいたします。



●質問者: clinejp
●カテゴリ:コンピュータ ゲーム
✍キーワード:いぬ ひつじ ひとつ エクセル ソート
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● t_shiono
●60ポイント

こんな感じでしょうか?

以下では、1列目の内容から、3-4番目、7-8番目、11-12番目・・・は連続した要素を抜き出し、その他は1つおきに抜き出して、2列目に出力します。

 Dim steps(1 To 3) As Integer
 steps(1) = 1
 steps(2) = 0
 steps(3) = 1
 s = 0
 For i = 1 To 100
 s = s + steps((i Mod 3) + 1)
 Cells(i, 2).FormulaR1C1 = "=R[" & s & "]C[-1]"
 Next

一つ確認ですが、回答の

1-3-5-6-8-10-11-12

の最後は12でよいのでしょうか?順序的には13を出力する箇所かと思うのですが、13は存在しないので、上記マクロでは空欄になります。


質問中の出力を再現するには、ちょっと強引ですが、次の感じでしょうか。

 Dim steps(1 To 3) As Integer
 steps(1) = 1
 steps(2) = 0
 steps(3) = 1
 s = 0
 For i = 1 To 100
 d = steps((i Mod 3) + 1)
 s = s + d
 If Cells(i + s, 1).Value = Empty And d > 0 Then
 Cells(i, 2).FormulaR1C1 = "=R[" & s - d & "]C[-1]"
 GoTo END_OF_MACRO
 Else
 Cells(i, 2).FormulaR1C1 = "=R[" & s & "]C[-1]"
 End If
 Next
END_OF_MACRO:
End Sub

何かの参考になれば。

http://dummy

◎質問者からの返答

すみません。

ご指摘の通り最後が間違えていました。

>>1-3-5-6-8-10-11-12

ではなく、

1-3-5-6-8-10-12-13

です。

Mod をこんな風に使うとできるんですね。

ありがとうございました。

関連質問


●質問をもっと探す●



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