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

こんにちは。

1つのシート内のセルにバラバラに、数字がある場合
それらをまとめて昇順に並べ替えをすることは出来ますか?

例えば、
a-001 a-009 a-008 a-007
a-005 a-002 a-006 a-012
a-010 a-011 a-003
a-004



a-001 a-005 a-008 a-010
a-002 a-006 a-009 a-011
a-013 a-007 a-012
a-004

と並べ替えをしたいのです。

やはり、これは1列になっていないとダメなのでしょうか?

よろしくお願いします。

A 回答 (4件)

表示形式を【"a-"@】と設定してあったんですね・・・やられた。


てっきり文字列かと思ってました。
というわけで、書式設定に対応したマクロへ変更しました。
如何でしょう。お望みの結果になれば幸いです。

以下、マクロのソースです。
'******************** ここから ********************
Sub AreaSort()
  Application.DisplayAlerts = False
  
  Sheets.Add , ActiveSheet
  
  Sheets(1).Select
  arLeft = Selection.Column
  arTop = Selection.Row
  arRight = arLeft + Selection.Columns.Count - 1
  arBottom = arUp + Selection.Rows.Count - 1
  
  c = 0
  For co = 0 To arRight
    For ro = 0 To arBottom
      wk = Cells(ro + arTop, co + arLeft).Value
      
      If Trim(wk) <> "" Then
        c = c + 1
        
        Sheets(2).Cells(c, 1).NumberFormatLocal = "@"
        Sheets(2).Cells(c, 1).FormulaR1C1 = "'" & CStr(wk)
      End If
    Next
  Next

  Sheets(2).Select
  Columns("A:A").Select
  Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
    :=xlPinYin

  Sheets(1).Select
  c = 0
  For co = 0 To arRight
    For ro = 0 To arBottom
      wk = Cells(ro + arTop, co + arLeft).Value
      
      If Trim(wk) <> "" Then
        c = c + 1
        Cells(ro + arTop, co + arLeft).FormulaR1C1 = CStr(Sheets(2).Cells(c, 1).Value)
      End If
    Next
  Next

  Sheets(2).Select
  ActiveWindow.SelectedSheets.Delete
  
  Application.DisplayAlerts = True
End Sub
'******************** ここまで ********************
    • good
    • 0
この回答へのお礼

出来ましたっ!!!
ありがとうございますっ!

ホント、説明不足で何度もすみませんでした。
(自分も良くわかっていないものを説明するのは難しいですね。)
こんなワタシにお付き合い下さって、感謝、感謝です。

本当にありがとうございました!

お礼日時:2002/12/04 17:26

汚いソースですが、べたな操作をマクロにしてみました。

如何でしょうか?

使用方法:
 ソートしたい範囲を範囲選択して、マクロを実行。

質問にあるような順序でソートします。

以下、マクロのソースです。
'******************** ここから ********************
Sub AreaSort()
  Application.DisplayAlerts = False
  
  Sheets.Add , ActiveSheet
  
  Sheets(1).Select
  arLeft = Selection.Column
  arTop = Selection.Row
  arRight = arLeft + Selection.Columns.Count - 1
  arBottom = arUp + Selection.Rows.Count - 1
  
  c = 0
  For co = 0 To arRight
    For ro = 0 To arBottom
      wk = Cells(ro + arTop, co + arLeft).Value
      
      If Trim(wk) <> "" Then
        c = c + 1
        
        Sheets(2).Cells(c, 1).Value = wk
      End If
    Next
  Next

  Sheets(2).Select
  Columns("A:A").Select
  Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
    :=xlPinYin

  Sheets(1).Select
  c = 0
  For co = 0 To arRight
    For ro = 0 To arBottom
      wk = Cells(ro + arTop, co + arLeft).Value
      
      If Trim(wk) <> "" Then
        c = c + 1
        Cells(ro + arTop, co + arLeft).Value = Sheets(2).Cells(c, 1).Value
      End If
    Next
  Next

  Sheets(2).Select
  ActiveWindow.SelectedSheets.Delete
  
  Application.DisplayAlerts = True
End Sub
'******************** ここまで ********************
    • good
    • 0
この回答へのお礼

お手数をおかけしました!ありがとうございます!!!!

このマクロでやってみました。
マクロ自体の内容は私にはさっぱりわからないのですが出来ました。

ですが、1つだけ質問させて頂いてよろしいですか?

このセルは書式設定で表示形式を【"a-"@】としてありまして、
数字だけ入れれば「a-001」と表示される様になっています。

で、このマクロを実行するとその表示が消えてしまうのです。
でも書式設定の中を見ると設定はそのままです。
しかし、セルの中にある数字は001です。??

・・・昇順には並べられたので良いのですが、これを元に
この番号の順番のままのラベルを作りたいのです。

ちょっと量が膨大なので、出来ればマクロ実行後のデータを
ラベル製作に使用したいです。

わがまま言いましてすみませんが、もしおわかりになりましたら
再度回答いただけますでしょうか?

よろしくお願いします。

お礼日時:2002/12/04 14:56

補足を見たがまだ良く判らないので。


A列は4行、B列、C列は3行、D列は2行になっているのは
どう言うところから来るのですか。
ソート前がそうなっているからですか。
VBAで(ブランクを除く)全セルデータをソートし、A,B、C,D列に詰めるデータ数(行数)が判っておれば、順に
セルに入れていけますが。
データ数はいくらぐらいですか。
昨日データを1列に並べる関数を回答したが、
それを使って手作業で、埋めこんだ方が速いでしょう。
ABCD列とも同じ行数なら、一旦1列にしてソートした
結果のデータを関数でABCD列に分けることが出きるかもしれない。
    • good
    • 0
この回答へのお礼

>A列は4行、B列、C列は3行、
となっていますのは、入力された時点でそうなってるんです。
例えば、東京の製品番号がA列、大阪のものがB列、福岡のものがC列という感じです。それぞれの場所で製品数が違うので・・・。1~100の製品番号の中には
大阪のものもあれば東京のものもあります。
で、それを製品番号の昇順に並べたいのです。

でも、だいたいBlueRayさんの回答ので出来ました。
ありがとうございました。

お礼日時:2002/12/04 14:33

どのように昇順に並んでいるのでしょうか?


規則性がよくわからないですよ。元と後が不一致!

この回答への補足

ホントだ・・・。
すみません、間違ってました・・・。

a-001 a-009 a-008 a-007
a-005 a-002 a-006 a-012
a-010 a-011 a-003
a-004


::: --A-- --B-- --C-- --D--
-1- a-001 a-005 a-008 a-011
-2- a-002 a-006 a-009 a-012
-3- a-003 a-007 a-010 xxxxx
-4- a-004 xxxxx xxxxx xxxxx

です。

「--A-- / -1-」はセル番号です。(ちょっとずれてるかもしれません。)
xxxxxx は空白を意味してます。
A1からD4までのセル内にある数字(文字)を
昇順に並べることは出来ますか?(ブランクのセルもある)

説明がわかりづらくてすみません・・・。

よろしくお願いします。

補足日時:2002/12/03 16:40
    • good
    • 0

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