人に聞けない痔の悩み、これでスッキリ >>

こんにちは、エクセルで以下のように入力している場合、
同じコードの人ををグループと考えて、その代表者のあいうえお順
で並べ替えをする方法はありますでしょうか??

A列にコード、B列に名前、C列に振り仮名が振ってあります。
001、002などでグループ分けして、グループごとの
それぞれの人にabcを割り当てています。
合計で2000人くらいグループは400程度あります。

001a  山田太郎  やまだたろう
001b  山田花子  やまだはなこ
001c  岡本一郎  おかもといちろう
002a  鈴木健二  すずきけんじ
002b  佐藤優子  さとうゆうこ
003a 宮元博   みやもとひろし
004a 田中ゆうじ たなかゆうじ
004b 原 桂子  はら けいこ
005a 伊藤裕美  いとうゆみ
005b 内田芳樹  うちだよしき

現在はコード順に並んでいますが、これを代表者(aのついている人)
を基準にして、「あいうえを順」にならべかえることはできますか??

005a 伊藤裕美  いとうゆみ
005b 内田芳樹  うちだよしき
002a  鈴木健二  すずきけんじ
002b  佐藤優子  さとうゆうこ
004a 田中ゆうじ たなかゆうじ
004b 原 桂子  はら けいこ
003a 宮元博   みやもとひろし
001a  山田太郎  やまだたろう
001b  山田花子  やまだはなこ
001c  岡本一郎  おかもといちろう

と、このように並べ替えたいのですが・・
代表者(aの人)をあいうえお順に並べ替えると、bcd・・・の
人はあいうえお順に関係なく同じグループの「a」の人にくっ付いてくるようにしたいのですが・・・
なにか方法があれば、どうかよろしくお願いします!

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Fig-1


   A    B       C      D   E
1  CODE NAME    PHONETIC     TEMP1 TEMP2
2  001a 山田太郎  やまだたろう   001  a
3  001b 山田花子  やまだはなこ   001  b
4  001c 岡本一郎  おかもといちろう 001  c
5  002a 鈴木健二  すずきけんじ   002  a
6  002b 佐藤優子  さとうゆうこ   002  b
7  003a 宮元博   みやもとひろし  003  a
8  004a 田中ゆうじ たなかゆうじ   004  a
9  004b 原 桂子  はら けいこ   004  b
10 005a 伊藤裕美  いとうゆみ    005  a
11 005b 内田芳樹  うちだよしき   005  b
12

D2: =LEFT(A2,3)
E2: =RIGHT(A2,1)
範囲 D2:E2 を下方に複写

[オートフィルタ]を設定して、E列を“a”で抽出した結果が Fig-2 です。

Fig-2
   A     B       C      D    E
1  CODE▼ NAME▼   PHONETIC▼   TEMP1▼ TEMP2▼
2  001a  山田太郎  やまだたろう  001   a
5  002a  鈴木健二  すずきけんじ  002   a
7  003a  宮元博   みやもとひろし 003   a
8  004a  田中ゆうじ たなかゆうじ  004   a
10 005a  伊藤裕美  いとうゆみ   005   a


[オートフィルタ]を掛けたまま(Fig-2の状態)で全範囲 A1:E10 を、C列の昇順で[並べ替え]えます。さらに、セル F2 に式 =SUBTOTAL(3,E$2:E2) を入力して、此れを下方に複写した結果が Fig-3 です。

Fig-3
   A     B       C      D    E    F
1  CODE▼ NAME▼   PHONETIC▼   TEMP1▼ TEMP2▼ TEMP3
2  005a  伊藤裕美  いとうゆみ   005   a      1
5  002a  鈴木健二  すずきけんじ  002   a      2
7  004a  田中ゆうじ たなかゆうじ  004   a      3
8  003a  宮元博   みやもとひろし 003   a      4
10 001a  山田太郎  やまだたろう  001   a      5


[オートフィルタ]を掛けたまま(Fig-3の状態)で範囲 D2:F10 を選択して、此れを何処かの空き地(例えばセル K1)に[値の貼り付け]た結果を Fig-4 に示します。

Fig-4
  K  L M
1 005 a 1
2 002 a 2
3 004 a 3
4 003 a 4
5 001 a 5


[オートフィルタ]を解除して、セル F2 に式 =VLOOKUP(D2,K$1:M$5,3,FALSE)+(E2<>"a")*ROW()/10000 を上書き入力して、此れを下方に複写した結果が Fig-4 です。

Fig-4
   A    B       C      D   E   F
1  CODE NAME    PHONETIC     TEMP1 TEMP2 TEMP3
2  005a 伊藤裕美  いとうゆみ    005  a      1
3  001b 山田花子  やまだはなこ   001  b   5.0003
4  001c 岡本一郎  おかもといちろう 001  c   5.0004
5  002a 鈴木健二  すずきけんじ   002  a      2
6  002b 佐藤優子  さとうゆうこ   002  b   2.0006
7  004a 田中ゆうじ たなかゆうじ   004  a      3
8  003a 宮元博   みやもとひろし  003  a      4
9  004b 原 桂子  はら けいこ   004  b   3.0009
10 001a 山田太郎  やまだたろう   001  a      5
11 005b 内田芳樹  うちだよしき   005  b   1.0011
12


全範囲 A1:F11 を、F列の昇順で[並べ替え]えた結果が Fig-5 です。

Fig-5
   A    B       C      D   E   F
1  CODE NAME    PHONETIC     TEMP1 TEMP2 TEMP3
2  005a 伊藤裕美  いとうゆみ    005  a      1
3  005b 内田芳樹  うちだよしき   005  b   1.0003
4  002a 鈴木健二  すずきけんじ   002  a      2
5  002b 佐藤優子  さとうゆうこ   002  b   2.0005
6  004a 田中ゆうじ たなかゆうじ   004  a      3
7  004b 原 桂子  はら けいこ   004  b   3.0007
8  003a 宮元博   みやもとひろし  003  a      4
9  001a 山田太郎  やまだたろう   001  a      5
10 001b 山田花子  やまだはなこ   001  b    5.001
11 001c 岡本一郎  おかもといちろう 001  c   5.0011
12
    • good
    • 2
この回答へのお礼

ありがとうございます。
なるほど、こういうやり方があるのですね。
まさに、求めていたものです。
うまくいきました!!

今後もよろしくお願いします!

お礼日時:2007/05/29 00:55

マクロでやると出来そうです。


ーーーーーーーーーーーーーーーーーーーーーーーー
Sub 並べ替え()
Dim データ(9, 2)
データ数 = 10
コード桁 = 3
リーダーの印 = "a"

Sheets("Sheet1").Select
Range("A1").Select

For I = 0 To データ数 - 1

データ(I, 0) = Cells(I + 1, 1)
データ(I, 1) = Cells(I + 1, 2)
データ(I, 2) = Cells(I + 1, 3)

Next I

Sheets("Sheet2").Select
Range("A1").Select

For I = 0 To データ数 - 1

If Right(データ(I, 0), 1) = リーダーの印 Then
Selection = データ(I, 0)
ActiveCell.Offset(0, 1).Range("A1") = データ(I, 1)
ActiveCell.Offset(0, 2).Range("A1") = データ(I, 2)

ActiveCell.Offset(1, 0).Range("A1").Select
End If
Next I
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin

Range("A1").Select


For J = 0 To データ数 - 1
比較データ = Selection
For I = 0 To データ数 - 1

If データ(I, 0) <> 比較データ And Left(データ(I, 0), コード桁) = Left(比較データ, コード桁) Then
ActiveCell.Offset(1, 0).Range("A1:C1").Select
Selection.Insert Shift:=xlDown
ActiveCell.Select
Selection = データ(I, 0)
ActiveCell.Offset(0, 1).Range("A1") = データ(I, 1)
ActiveCell.Offset(0, 2).Range("A1") = データ(I, 2)

データ(I, 0) = ""
データ(I, 1) = ""
データ(I, 2) = ""
End If

Next I
ActiveCell.Offset(1, 0).Range("A1").Select

Next J
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーー
このマクロは10名のデータを処理します。
グループの数字の文字数は3桁で揃っている必要があります。
リーダーの印はa(半角の小文字a)です。
A列にコード、B列に名前、C列に振り仮名です。
Sheet1にタイトル行なしで、データを置き、
Sheet2に並べ替えたデータを落とし込みます。

人数分で処理するには、Dim データ(9, 2)の
9のところを人数マイナス1の数字に置き換えてください。

データ数 = 10 (この人数を変更してください。)
必要があれば以下も修正
コード桁 = 3 
リーダーの印 = "a"

一度試してみてください。10人分では上手く出来ました。
2000人で上手くいくか保障は出来ませんけど・・・。(^^;
    • good
    • 0
この回答へのお礼

ありがとうございます。
正直マクロはよく分からないのです・・・
使ったことも無くて・・
マクロ少し勉強して、今度試して見ます!!
折角の貴重なご意見を試すことができなくて申し訳ないです。

お礼日時:2007/05/29 00:53

こんばんは。



その並べ替えの規則が見えてきません。

>あいうえお順に関係なく同じグループの「a」の人にくっ付いてくるようにしたい


たとえば、以下のようにして、タイトル行を振っておいて、

コード  名前  ふりがな  コード1

コード1のところに、

=MID(A2,1,LEN(A2)-1)+(123-CODE(RIGHT(A2,1)))/100
このような数式を入れれば、


001a  山田太郎  やまだたろう  1.26
001b  山田花子  やまだはなこ  1.25

となります。

データ-並べ替え

最優先されるキー
コード1  降順

2番目に優先されるキーで、
ふりがな  昇順

とすれば、それに近くなります。
ただ、コードは、5 の次に、2 が来ることはありえません。
あくまでも、5, 4, 3, 2, 1 の序列は変わりません。

なお、末尾字は、a,b,c, 小文字であることを前提としています。また、26個までです。
    • good
    • 0
この回答へのお礼

お答えいただきありがとうございます。
試してみましたが私の思い描いたものとは少し異なりました。
説明が下手で申し訳ないです。
今後もよろしくお願いします。

お礼日時:2007/05/29 00:50

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q【Excel】小計単位で並べ替えを効率よく行いたいのですが・・

Excelのリストで、約20行おきに小計行があります。その小計の単位で、数値を対象に並べ替えを行いたいのですが、効率よく行う方法がありましたら、ご伝授ください。
なお、行数はデータの変化に伴い毎回異なります。
WindowsXP・Excel2003です。

Aベストアンサー

あまりスマートな方法ではないと思うのですが、お急ぎのようですので。

仮に、A列に数値と小計(SUM関数)のみがすき間無く入っているとして、です。
【1】A列を選択し、置換で「=」を適当な文字に変換します(ここでは「(=)」にしたとします)
【2】隣の列(B列)へは1,2…と行番号と同じ物を入力。(「1」,「2」まで入力して2セルを選択し、選択枠右下の小さな黒四角をダブルクリックすると便利)
【3】更に隣の列(C列)には、1行目は「0」2行目には『=IF(TYPE(A1)=1,C1,C1+1)』と入力して、データ分だけ下へコピーします(前の手順と同様、右下四角ダブルクリックでOK)
【4】C列を選択してコピーし、そのままC列へ「形式を選択して貼り付け」で「値」として貼り付けます。
【5】A,B,C列を選択し、メニューバーの[データ]→[並べ替え]を選択。C列、A列、B列の順番で昇順にしてソートします。
【6】A列を選択し、置換で「(=)」を「=」に変換(戻)します。
【7】B,C列は削除

お試し下さい。

QEXCEL で複数行を1単位としてソートかけたいのですが

EXCEL で複数行を1単位としてソートかけたいのですが
ご存知の方教えてください。

例えば

第8号
  安部なつみ
  東京都○○区
  090-1234-5678
第3号
  井川遥
  千葉県ちば市○○町
  080-1234-5678
第4号
  上戸綾
  群馬県○○市
  090-9876-5432

こんな感じで 4行1単位のデータを号でソートできませんか?

よろしくお願いします

Aベストアンサー

補助列を使用して、補助列を基準に並べ替える方法で、

第8号 が A1 として 空いている列の1行目へ
=OFFSET(A$1,(INT(ROW(A4)/4)-1)*4,)&"-"&MOD(ROW(A4),4)+1 を、オートフィルで必要分下へ。

第8号 が A3 としたら 空いている列の3行目へ
=OFFSET(A$3,(INT(ROW(A4)/4)-1)*4,)&"-"&MOD(ROW(A4),4)+1 を、オートフィルで必要分下へ。

第8号-1,第8号-2,第8号-3,第8号-4,第3号-1,第3号-2,第3号-3,第3号-4・・・と補助列に表示されます。(数式を、値の貼り付けで削除した方が良いと思います)

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

Qエクセル メンバー表からグループメンバーを抽出

縦に名前が並び、その横の列に男女、その横の列にA・B・Cの3グループが入力されている表があります。
その表からAグループ・Bグループ・Cグループのメンバーを抽出して各グループのメンバー表を作成したいです。

条件として…
(1)今後メンバーが増える可能性がある。
(2)メンバーの所属グループは変更になる。
(3)グループの人数構成はバラバラである。
(4)メンバー表の名前は上から縦に並べたい。
(5)メンバー表はそれぞれ別シートに作成したい。
(6)ABどちらかに所属する男性のみ(女性のみ)のグループのメンバー表も作成したい。

毎日作成するので日々の手間を最小限にしたいです。
関数等を利用して一発で表作成することはできないでしょうか?

よろしくお願いします。

Aベストアンサー

関数案については、既に回答が出ていますが
さて、提示された関数をご理解できましたでしょうか。
条件が変更されたときに、ご自身で式を変更するには
意外と、VBA以上の知識が必要な位複雑な式です。
別案ですが、フィルターオプション の機能を紹介しておきます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm
のサイトを参考にしてください。
機能を理解できれば、色々な応用が可能です。
毎日、実行するのであれば、一度、マクロの記録を実行すればよいです。
記録される内容は、ほんの1行ですので、VBAを理解するのも楽です。

QExcelで複数列かつ複数行分の一括並べ替えについて教えてください

Excel2003を使っています。
【例】
A1:N530の表の中の一部分D1:I530範囲(6列で530行)部分のみを
列単位で一括で並べ替えしたいと思っております。
D1:I530範囲には6列に23、96、11、106、72、49といったように530行全てランダムに数値が入っております。これを各行毎に全て左から昇順に530行分一括並べ替えしたいということでございます。
エクセル機能の「データ」→「並べ替え」→「現在選択する範囲を並べ替える」→「オプション」→「列単位」を指定して列単位に並べ替えは出来たのですが1行ずつしかソート出来ません。
このやり方では530回並べ替え作業をすることになり、時間的に余裕がないのでこの場合にExcel2003の機能で一括で530行分を列単位でもって左から並べ替えをする方法があるでしょうか?
ちなみにExcel2007もまだ使ったことないですが所持しています。
仕事上緊急でご質問させていただいております。是非助けてください。

Aベストアンサー

>セル背景色も一緒にソート移動されているかなと思った・・・・・
下記マクロを試してください。

Sub test1()
Dim r As Range
Dim srng As Range

Set srng = Range("D1:D530")
For Each r In srng
'列単位昇順並べ替え
r.Resize(, 6).Sort Key1:=r, _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
Next
End Sub

Qエクセルでのデータの並べ替え

くわしい方、教えていただけないでしょうか?
ネットで検索しましたが、解決するような記事が見つかりませんでした。

添付画像のような表を作成しております(実際はもっと下にたくさん入力が続いてます)。

やりたいことは、この表にどんどんデータを入力していったときに、
グループバラバラなので、データの並べ替えでグループ名ごとにひとかたまりにして並べ替えたいのです(降順でも昇順でも、どちらでもいいです。でもできれば、グループ内で、氏名があいうえお順とかになるとすごく嬉しいです・・・・)

ですが、今の状態で並べ替えようとすると、「この操作には、同じサイズの結合セルが必要です」とエラーが出ます。

エクセルにあまり詳しくないですが、おそらくこれは、一人分のデータがA列とB列は1行ずつなのにC列で2行あるからだと思っているのですが、どうしても、C列は2行必要なので(誕生日のデータだけなら、D列に書けばいいのですが、C列にはほかにも書きたいデータがあってここは2行必要なんです)


この場合、どのようにしたら、うまく並べ替え(2行をひとかたまりと認識して)できるのでしょうか?

どなたかご教授してくださると嬉しいです。

くわしい方、教えていただけないでしょうか?
ネットで検索しましたが、解決するような記事が見つかりませんでした。

添付画像のような表を作成しております(実際はもっと下にたくさん入力が続いてます)。

やりたいことは、この表にどんどんデータを入力していったときに、
グループバラバラなので、データの並べ替えでグループ名ごとにひとかたまりにして並べ替えたいのです(降順でも昇順でも、どちらでもいいです。でもできれば、グループ内で、氏名があいうえお順とかになるとすごく嬉しいです・・・・)
...続きを読む

Aベストアンサー

こんばんは!

並び替え・集計等々はセルの結合があると厄介ですね!

一番良いのはセル結合がない表を作り替えるコトなのですが、
すでに表が作成済みだとすると

一旦結合を解除 → 空白セルにもデータを入力 → 並び替え → セルの再結合
といった処理が必要になると思います。

これを手作業で!となると大変ですので、VBAでやってみました。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストし、Excel画面に戻ってマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub 並び替え() 'この行から
Dim i As Long
Application.ScreenUpdating = False
'セルの分割
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 2
With Cells(i, 1)
.UnMerge
.Offset(, 1).UnMerge
.Offset(1) = Cells(i, 1)
.Offset(1, 1) = Cells(i, 2)
End With
Next i
Cells(1, 1).CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, Header:=xlYes _
, key2:=Cells(1, 2), order2:=xlAscending, Header:=xlYes

'セルの再結合
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row - 1 Step 2
Application.DisplayAlerts = False
With Cells(i, 1)
.Resize(2, 1).Merge
.Offset(, 1).Resize(2, 1).Merge
End With
Next i
Application.ScreenUpdating = True
End Sub 'この行まで

※ 質問通りに1行目がタイトル行でデータは2行目以降にあり、A・B列は2行ずつ結合されているとします。
こんな感じではどうでしょうか?m(_ _)m

こんばんは!

並び替え・集計等々はセルの結合があると厄介ですね!

一番良いのはセル結合がない表を作り替えるコトなのですが、
すでに表が作成済みだとすると

一旦結合を解除 → 空白セルにもデータを入力 → 並び替え → セルの再結合
といった処理が必要になると思います。

これを手作業で!となると大変ですので、VBAでやってみました。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストし、Excel画面に戻ってマクロを実行してみてくださ...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QExcelで隣のセルと同じ内容に列を並べ替える方法

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずすみません。

例えば、

A|E *****
B|C *****
C|D *****
D|A *****
E|B *****

このような感じです。*はそれぞれの人特有のデータなので、ABCDE順に並べ替えても引き継がせたいデータです。

ECDABの隣にすでにあるABCDEの氏名(漢字)のデータをコピーし、
ECDABをABCDEの順番に並べ替えたいのです。


少しわかりにくいかもしれませんが、
もし何か良い方法ありましたら、お教えいただけますと幸いです。
よろしくお願い致します。

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずす...続きを読む

Aベストアンサー

例えばシート1のA2セルから下方にはECDABと氏名が並び横の列にはそれぞれの人のデータが入力されているとします。
そこでシート2には並び変えたい氏名の順序でA2セルから下方にABCEと入力します。
シート2のB2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(COUNTIF(Sheet1!$A:$A,$A2),IF(VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)="","",VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)),"")

その後にシート2全体を選択してから右クリックして「コピー」し、その後にシート2のA1セルにカーソルを移して右クリックし、「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。

Qエクセルで文字が混じった数字を並べ替えしたいのですが

どなたか、お力お貸し頂けませんか?
一言でも、アドバイス頂ければ幸いです!!

エクセルで、製品の機番の並び替えをしたいです。
111234
223452
123A11
123B23
455A67

こんな感じで、機番が並んでいます。(本当は10桁だけどわかりやすくするため減らしてます)
困ったのは、機番にアルファベットが混じっているので、単純に照準で並べ替えると、アルファベット混じりでない数字のみが先にきて、アルファベット混じりが後に続くことです。
実は、アルファベットの前の数字を基準に並べ替えたいのです。(そして更に、アルファベット前の数字が同じな場合、以降のアルファベットはABC順に並べたい)

私が考えた方法は、
LEFT関数を使って、アルファベット前の数字だけ出して、(幸いなことに、アルファベットのある場所が、最初から4番目と決まっています、なので、これが使えると思って)、それを基準に昇順に並べ替える方法。
隣の列には、アルファベット含む全10桁の機番をそのまま付けておけば、これで自然と、アルファベットもABC順になってくれるみたいなので。
そして更に、アルファベットの混じっている機番だけが左詰めになってしまうので、数字のみの機番と見やすく揃えるため、セルの書式設定で、右か左のどちらか詰めに直します。
これでも、できるはできると思うのですが・・

このやり方では?という方法や何かアドバイスいただければ、とっても幸いです。

(機番が全部で1000個以上あって、これから私が在庫管理をまかされる機番の種類は、アルファベットが2個混じってるものや、混じってる位置もばらばらなものもあるようです><;アルファベットが最初と最後から3番目に混じってる機種とか・・(++;)今回はとりあえず、最初から4桁目がアルファベットの機種の機番のやり方だけでもと思い、ご相談させて頂きました)
どうぞ宜しくお願い致しますm(__)m

どなたか、お力お貸し頂けませんか?
一言でも、アドバイス頂ければ幸いです!!

エクセルで、製品の機番の並び替えをしたいです。
111234
223452
123A11
123B23
455A67

こんな感じで、機番が並んでいます。(本当は10桁だけどわかりやすくするため減らしてます)
困ったのは、機番にアルファベットが混じっているので、単純に照準で並べ替えると、アルファベット混じりでない数字のみが先にきて、アルファベット混じりが後に続くことです。
実は、アルファベットの前の数字を基準に並べ替えたいの...続きを読む

Aベストアンサー

「(そして更に、アルファベット前の数字が同じな場合、以降のアルファベットはABC順に並べたい)」
についての回答がないので補足します。

仮にA列に機番が入力されているとして、
1.まず機番の後にB列以降に7列以上挿入します。
2.10桁の機番を念のため、半角に揃えるならASC関数、全角に揃えるならJIS関数、を使って、機番を半角か全角に揃えます。そして、B列の計算結果をコピーして、C列に形式を選択して貼り付け→値を選択して貼り付けます。
3.C列を選択して、データ→「区切り位置」をクリックします。
4.「区切り位置指定ウィザード 1/3」のダイアログボックスが出てきたら、
  “スペースによって右または左に揃えられた固定長フィールドのデータ”
  の右のオプションボタンのほうを選択して、右下の「次へ>」をクリックします。
5.「区切り位置指定ウィザード 2/3」のダイアログボックスで、
  アルファベットのある4文字目の前後をクリックして、
  2つの区切り位置を作成します。
6.「区切り位置指定ウィザード 3/3」はそのままで、「完了」をクリックします。
7.これで、C、D、E列に機番が分割されました。
8.データ→並べ替えをクリックして並べ替えダイアログボックスを出して、
  最優先されるキーを‘列C’(前3桁の数字部分)
  2番目に優先されるキーを‘列D’(アルファベットの部分)
  にして「OK」をクリックして、並べ替えをします。
9.並べ替えは完了しましたが、機番が3列に分かれてしまっているので、
  F列に、CONCATENATE関数を使って、
  引数を同じ行のC列、D列、E列を選択します。
10.出てきた(くっついた?)計算結果を、G列に
  形式を選択して貼り付け→値を選択して貼り付けます。
11.不必要な列を削除します。

面倒と思うでしょうが慣れると思います。いかがでしょうか。

なお、余談ですが、Excel2002以降では、セルの書式を事前や事後に“文字列”にしてもエラーチェックが出てしまいますので、
出てきたエラーチェックのインジケータを残して無視するか、
ツール→エラーチェックのダイアログで「無視」をクリックしまっくって消すか、
ツール→オプション→「エラーチェック」タブで“バックグラウンドでエラーチェックを行う”のチェックボックスをオフにするしかないです。

「(そして更に、アルファベット前の数字が同じな場合、以降のアルファベットはABC順に並べたい)」
についての回答がないので補足します。

仮にA列に機番が入力されているとして、
1.まず機番の後にB列以降に7列以上挿入します。
2.10桁の機番を念のため、半角に揃えるならASC関数、全角に揃えるならJIS関数、を使って、機番を半角か全角に揃えます。そして、B列の計算結果をコピーして、C列に形式を選択して貼り付け→値を選択して貼り付けます。
3.C列を選択して、データ→「区切り位置」をクリ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング