• 締切済み

エクセル 並び替え

支払調書一覧表をエクセルで作成しております。 エクセルを行をあいうえお順に並び替えたいです。 Cの行に支払先の名前を一覧表に入れてます。  たとえば C5、C6のセルに山崎(c5、c6セルを統合してます、) D5=報酬額,、D6=源泉税 E5=山崎の報酬 E6=山崎の報酬の10%源泉税 E4、F4,G4,、、、の列は1月から12月まで入力 C7,C8=中島 D7=報酬額 D8=源泉税 E7=中島報酬、E8=中島の源泉税 C9,C10=武田 F9=報酬額 F10=源泉税 。。といった感じで 10名ほど あいうえお順不同で報酬、源泉税入力してます。 このC列の名前をあいうえお順にしたいのですが 、報酬額、源泉税を変えないでです。 どうしたらあういうえお準に支払報酬表を作成できるか お知恵とお力をいただけないでしょうか。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

最近はまっているdictionaryの応用編で作成してみました。同じ場所での並べ替えではありません。計算式がブロックごと他に複写しても正常に動作する様な作りになっている事が条件です。XL2000用のコードです。コード解説はいたしかねますので、VBA dictionaryで検索してお調べ下さい。 Sub test() Dim targetRange As Range, destRange As Range Dim myDic As Object, myKey As Variant, myKeyS As Variant Dim i As Long Dim keyString As String Dim blockHeight As Long, blockwidth As Long '並べ替えるブロックのサイズ(縦、横セル数) blockHeight = 2 blockwidth = 14 Set targetRange = ActiveSheet.Range("c5").Resize(blockHeight, blockwidth) Set myDic = CreateObject("Scripting.Dictionary") Do Until targetRange.Cells(1, 1).Value = "" keyString = targetRange.Cells(1, 1).Value If Not myDic.exists(keyString) Then myDic.Add keyString, targetRange Else 'ここはキーの重複対策に一応入れてみた。重複が無ければ不要。 Do While myDic.exists(keyString) keyString = keyString & "a" Loop myDic.Add keyString, targetRange End If Set targetRange = targetRange.Offset(blockHeight, 0) Loop myKey = myDic.keys myKeyS = BubbleSortStrings(myKey, 1) 'ブロック先頭セルを結合しているので、先頭セルのみ指定だと、offsetが意図せぬ動作 Set destRange = ActiveSheet.Range("t5").Resize(blockHeight, blockwidth) For i = 0 To myDic.Count - 1 myDic(myKey(i)).Copy destRange.PasteSpecial (xlPasteAll) Set destRange = destRange.Offset(blockHeight, 0) Next Set myDic = Nothing Application.CutCopyMode = False End Sub 'Microsoftのバブルソートを改造 簡単な分遅いかも... 'direction 1:昇順、-1 降順 Private Function BubbleSortStrings(sArray As Variant, direction As Long) As Variant Dim lLoop1 As Long Dim lLoop2 As Long Dim lTemp As String For lLoop1 = UBound(sArray) To LBound(sArray) Step -1 For lLoop2 = LBound(sArray) + 1 To lLoop1 If StrComp(sArray(lLoop2 - 1), sArray(lLoop2)) = direction Then lTemp = sArray(lLoop2 - 1) sArray(lLoop2 - 1) = sArray(lLoop2) sArray(lLoop2) = lTemp End If Next lLoop2 Next lLoop1 BubbleSortStrings = sArray End Function

全文を見る
すると、全ての回答が全文表示されます。
  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.4

関数と並び替えをつかってするなら・・・ まずは結合はまとめて解除しましょう(並び替えするにはどうしても必要) G5に「=PHONETIC(C5)&"1"」 G6に「=PHONETIC(C5)&"2"」 と入れておきます。 次にG5,G6を選択してオートフィルタで下にコピーします。 次に表全体をG列を基準に並び替えします 試してみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.3

VBAにするにしてもソートはExcelのソートを使うほうが便利かも 入力用と印刷用を分けてシートにしては如何かな? ソート用は1行、1名 印刷用は3行1名 今のシートを印刷用にして、ソート用を作成 1行目をコピー、その後ろに2行目、3行目と3行を1行に複写してソート 現在の印刷シートは先頭の1人分だけソートシートを参照する まず = を入力してシートを切り替えて対象場所を入力すると =[シート名]!B1 と表示されるのでEnter後はそれを複写後に位置の文字 C1 などを直したほうが早いと思う。

全文を見る
すると、全ての回答が全文表示されます。
  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

先ほどの回答に「結合セルと結合していないセルが混在する表には、Excelの並べ替え機能は使えないみたいですね」と書こうとしていて、忘れていました。 > マクロの自作仕方わかりますか? わかりますが、マクロをまったく知らない人に教えるのは骨が折れるのでやめておきます。

全文を見る
すると、全ての回答が全文表示されます。
  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

1人1行のレイアウトに変更するか、レイアウト変更が嫌なら並び替え用のマクロを自作するしかないですね。

aizawasan
質問者

お礼

ありがとうございます。 マクロの自作仕方わかりますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルを使ってのグロスアップ計算

    新しい源泉所得税率実施に伴い、計算がややこしくなったため、エクセルを使って計算シートを作成しているのですが、一部1円計算があわないため、頭をかかえております。 たとえば、10万円の手取りに対して消費税を明確にしている場合、その報酬額に10.21%をかければよいはずですが、 手取り額A/94.79%=報酬額B Bx5%=消費税C Bx10.21%=源泉所得税D B+C-D=E A=E このB、C、Dに今はRoundown関数を使っているのですが、これですと、Aに入れる数字に よって1円ずれてしまいます。どんな値をいれても最終的にA=Eになるようにするにはそれぞれにどの関数を使えばよいのでしょうか?ご教示いただければ幸いです。よろしくお願いいたします。

  • エクセル 並び替え&画像

    基本となるファイルには シート1の上部に画像がありその下に表があります。 それをシート2の上部に表、画像を表の下というふうに並び替えを行いたいです。 ・並び替え ┏━┳━┳━━━━━┓   ┏━┳━┓ ┃1┃A┃あいうえお┃   ┃1┃A┃ ┃1┃A┃かきくけこ┃ ⇒ ┃2┃B┃ ┃3┃C┃さしすせそ┃   ┃3┃C┃ ┃2┃B┃たちつてと┃   ┃4┃ ┃ ┃5┃D┃なにぬねの┃   ┃5┃D┃ ┃5┃D┃はひふへほ┃   ┗━┻━┛  ┗━┻━┻━━━━━┛  右の表(シート1)を左の表(シート2)のように並び替えがしたいです。 1列目の数字を基準に並び替えるのですが、 飛んでる数字を表示して順に並べたいのです。 3列目以降はいりません。 通常は約50列、約30行あるのですがこれくらい小さいものの応用だと思い、 この小さな表で質問させていただきました。 ・画像の移動 シート1のセルA1~セルE5の大きさの画像があるとします。 この画像をシート2のセルC10~E13に移動して それに合わせて大きさも変更したいです。 最終的にはマクロを組むところまでできるとうれしいのですが、 できる範囲で教えてください、お願いします。

  • エクセルのデータ並び替えについて

     A  B  C  D  E  F 1(1) (2) (3) (4) (5) (6) 2(7) (8) (9) (0) (イ) (ロ) エクセルのデータの並べ替えにおいてですが、例えば上のようなデータを  A  B  C  D  E  F 1(1) (2) (3) 2(4) (5) (6) 3(7) (8) (9) 4(0) (イ) (ロ) のように並び替えたいのですが、どのように簡単に並べることが出来ますでしょうか。

  • 報酬源泉税と復興特別所得税

    2014年4月には消費税8%→2015年10月には消費税10%になるため、消費税率がどのように改定されても対応できるようExcelの計算式を改造していて、ふと「報酬源泉税はどうなるのか?」と思い調べていたら、2013年1月より【復興特別所得税】なるものが上乗せされ報酬源泉税が10.21%になることを知りました。 1円差額が出ないようちょっとややこしい計算式になっていますが、現状は税務担当者から教えていただいた計算式(手取額から計算)です。  <現状>   A.手取額   B.総額=ROUND(A*105/95,0)   C.消費税=ROUND(B*5/105,0)   D.報酬額=B-C   E.源泉税=ROUND(D*0.1,0) <現状>の計算式から自分なりに考えて以下のような計算式に改造しました。  <今後> ※消費税8%の場合消費税比率は8、源泉税10.21%の場合源泉税比率は10.21を入力   A.手取額   B.総額=ROUND(A*(100+消費税比率)/((100-源泉税比率)+消費税比率),0)   C.消費税=ROUND(B*消費税比率/(100+消費税比率),0)   D.報酬額=B-C   E.源泉税=ROUND(D*(源泉税比率/100),0) この計算式でいろいろな税率を当てはめて確認してみて一応合っていると思いますが、何せ無知な人間が作った計算式なので間違っているかも知れません。 確認していただけると幸いです。

  • エクセル 並び替えについて

    B・C・D・Eセルにデータが入力しています。 そしてEのセルだけ=RANK(AL3,AL$3:AL$19)の数式でランラムで数字を1~8と書いています。 質問です。並び替えにEのせるを優先でランラムの数字を小さい数字に並べ変える方法を 教えてください。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • エクセル セル参照では並び替えが機能しないのをわかりやすく解説してほしい

    次のような2つの表を作成しようと思います。 (1)表(仕入表) コード 商品名 仕入数量 仕入単価 ~  1   A  2   B  3   C  4   D  5   E (2)表(売上表) コード 商品名 売上数量 売上単価 ~  1   A  2   B  3   C  4   D  5   E  (2)表作成の際、コードはオートフィル、商品名はセル参照で上の表からとってきたとします。ですが、商品名をセル参照で入れてしまうと並び替えがうまくいきません。  並び替えを正常に行うためには、VLOOK関数を使うのが適当かと思いますが、なぜセル番地で入れると並び替えが機能しなくなるのか、このあたり何となくわかっても論理的に明解にうまく説明することができません。  どなたかわかりやすくご教示いただければさいわいです。

  • EXCELの「並べ替え」機能について質問です。

    EXCELの「並べ替え」機能について質問です。 例えば、下記の表があった場合、行の並べ替えをすると、あいうえお順になると思いますが、単語の数の多い順に並べることは可能でしょうか? EXCELは2010を使っています。   A   B   C   D   E   F 1 リス ゾウ リス イヌ リス イヌ

  • ExcelのIF関数を使って

    学校の成績一覧表を作っています。成績は◎、○、△の3段階でつけます。 一覧表の中に、◎と△だけをつければ、残りの空白セルには、マクロで○が入るようにしてあります。 Excelのバージョンは2003です。 しかし、クラスによって人数が違うので、自動的に○が入るようにしてあっても、どこまで入れたらいいのかは変わってきます。 そこで、氏名を入れるセルを参照し、「もし、このセルが空白だったら、その下のセルはすべて空白になる」というような関数を入れておけばいいのかなと考えました。が、その関数がわかりません。 どなたか、教えてもらえませんでしょうか?           C1  D1  E1  F1  G1・・・・・            伊   佐  鈴  山           藤   藤  木  田   B2   読む力    ○  ◎  △  ◎    B3   書く力     ◎  ○  ○  △ 分かりにくいでしょうが、上のような感じで作ってます。 上の場合、G1セルに名前が入っていないので、G2セルから下は、マクロでは○が入りますが、関数によって空白にしたいのです。 よろしくお願いします。

  • エクセルで縦行のセルを横列のセルにリンク貼り付けをしたい

    表1の A B C D E F G . . . の各セルを、表2にA B C D E F G . . と簡単にリンク貼り付けをする方法がありませんか。

専門家に質問してみよう