アプリ版:「スタンプのみでお礼する」機能のリリースについて

どなたかご存じでしたらご教授願います。
下記の様に数字が、1~43迄の最大43個の数字があるとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
18
19
20
33
37
43

これらを、同じ末尾の数字で下記のようにまとめる方法が知りたいです。
末尾1:1 11
末尾2:2 12
末尾3:3 13 33 43
末尾4:4
末尾5:5
末尾6:6
末尾7:7 37
末尾8:8 18
末尾9:9 19
末尾0:10 20

使用しているエクセルは2007です。

以上、よろしくお願いします。

A 回答 (6件)

返す値が文字列数字でもよいなら、以下の数式を入力し、右方向に適当数、下方向に10行オートフィルコピーしてください(データが100個までの場合)。



=INDEX($A:$A,SMALL(INDEX((RIGHT($A$1:$A$100,1)<>RIGHT(ROW(A1),1))*1000+ROW($A$1:$A$100),),COLUMN(A1)))&""
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
前までの方と比べると
とてもシンプルな回答を頂き
これならいつでも、コピー&ペーストで使用できそうですね。

お礼日時:2011/11/11 23:16

1.範囲 A2:A11 に上から数値 1、2、…、9、0 を入力


2.範囲 A2:A11 に次の“ユーザー定義”を設定
    "末尾"G/標準
3.お示しの「1~43迄の最大43個の」数値をセル B1 から右へコピー
4.セル B2 に式 =IF(MOD(B$1,10)=$A2,B$1,"x") を入力して、これを右方および下方へズズーッとドラッグ&ペースト

以上の結果を添付図に示す。

5.範囲 A1:T11 を選択して、[コピー]→[値の貼り付け]を実行
6.範囲 A1:T11 を選択して、文字 x を空白に一発で[すべて置換]を実行
7.範囲 A1:T11 を選択して、[編集]→[ジャンプ]→[セル選択]を実行
8.“空白セル”に目玉を入れて、[OK]をパシーッ
9.[編集]→[削除]を実行
10.“左方向にシフト”にチェックを入れて、[[OK]をパシーッ]
11.1行目を削除
「同じ末尾数字にまとめる方法」の回答画像6
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
マトリクス方式もありですね。

お礼日時:2011/11/11 23:18

こんばんは!


VBAの方が簡単なような気がしますが・・・
関数で無理矢理やってみました。

Sheet1のデータ(A列)をSheet2に表示するようにしてみました。

↓の画像でSheet2のB1セルに
=IF(SUMPRODUCT((MOD(Sheet1!$A$1:$A$50,10)=MOD(ROW(A1),10))*(Sheet1!$A$1:$A$50<>""))<COLUMN(A1),"",INDEX(Sheet1!$A$1:$A$50,SMALL(IF(MOD(Sheet1!$A$1:$A$50,10)=MOD(ROW(A1),10),ROW($A$1:$A$50)),COLUMN(A1))))
これは配列数式になってしまいますので、この画面からコピー&ペーストする場合は
B1セルに貼り付け後、数式バー内で一度クリック!
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
これを列方向と行方向にオートフィルでコピーすると
画像のような感じになります。

※ 数式は50行目まで対応できるようにしています。

参考になれば良いのですが・・・m(_ _)m
「同じ末尾数字にまとめる方法」の回答画像4
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
また、私が結果のサンプルとして提示した結果をつけて頂き判りやすい内容です。

お礼日時:2011/11/11 23:14

A1からA43に最大43個の数字を並べ,


どこかてきとーなセルに
=IF(COLUMN(A1)>COUNT(1/$A$1:$A$43/(MOD($A$1:$A$43,10)=MOD(ROW(A1),10))),"",SMALL(IF(($A$1:$A$43<>0)*(MOD($A$1:$A$43,10)=MOD(ROW(A1),10)),$A$1:$A$43),COLUMN(A1)))
と記入してコントロールキーとシフトキーを押しながらEnterで入力し,
右にてきとー数,下にあと9行,コピーします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
関数の使用方法を示して頂き参考になります。

お礼日時:2011/11/11 23:12

珍しい、面倒な質問だ。

VBAで無いと関数とソート操作では面倒かも。
ソートして0が一番下に行ってくれないので、工夫が必要だった。
質問の例しかテストしてないので、十分テストしてみて。
(1)修正ソートキーをB列に作る
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
For i = 1 To d
s = ""
x = Cells(i, "A")
For j = Len(x) To 1 Step -1
If Mid(x, j, 1) = "0" Then
s = s & "a"
Else
s = s & Mid(x, j, 1)
End If
Next j
Cells(i, "B") = "'" & s
Next i
End Sub
(2)B列で(A列もつれ持って)ソートする。VBAでも出来るが、手操作でやる。
中間結果
11
1111
22
1221
33
1331
3333
4334
44
55
66
77
3773
88
1881
99
1991
10a1
20a2
(3)望みの表に編集する
Sub test02()
d = Range("A65536").End(xlUp).Row
x = Cells(1, "B")
j = 5
k = 1
Cells(k, j) = Cells(1, "A")
m = Left(x, 1)
For i = 2 To d
x = Cells(i, "B")
If Left(x, 1) = m Then
j = j + 1
Cells(k, j) = Cells(i, "A")
Else
k = k + 1
j = 5
Cells(k, j) = Cells(i, "A")
m = Left(x, 1)
End If
Next i
End Sub
ーーーー
結果
E列より右列に
111
212
3133343
4
5
6
737
818
919
1020
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
VBAではこうなるんですね。
早速試してみます。

お礼日時:2011/11/11 23:10

「まとめる」の定義が不明。



とりあえず末尾の取得は
「数字」の場合:RIGHT関数
「数値」の場合:10で割った余り
でできます。
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます。

お礼日時:2011/11/11 23:09

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