エクセルの質問です。

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番目のみがくっついているように、別の列に抽出するマクロが書きたいのです。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/01/09 13:15:52
  • 終了:2008/01/10 16:24:52

回答(1件)

id:t_shiono No.1

t_shiono回答回数256ベストアンサー獲得回数222008/01/09 18:41:50

ポイント60pt

こんな感じでしょうか?

以下では、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

id:clinejp

すみません。

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

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

ではなく、

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

です。

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

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

2008/01/10 16:23:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません