• ベストアンサー

EXCEL 単語帳作り

添付は昨年度の英単語を月別に日付順に並べてます。1月から12月まであり、年度分をまとめてabc順にソートをしたいのです。各月ごとにコピペを12回するのも時間がかかります。なんとか時間がかからないような方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

数年分くらいだったらあれこれ考えるより、実際に切り貼りしたほうが速そうです 1. D列で[Ctrl]+[↑]月の初めを選択 2. [Ctrl]+[Shift]+[End] 終わりまで選択 3. [Ctrl]+[X]切り取り 3. [Ctrl]+[Home]A1セルの選択 4. [Ctrl]+[↓]連続セルの1番下 5. [↓] 貼り付け位置 6. [Ctrl]+[V]貼り付け 7. [→]3回でD列選択 8. [Ctrl]+[↑] 3回 (3回目は意味のない場合有) 9. [Ctrl]+[↓] 10. 上記 2~9 を残り10回繰り返す 2~9をマクロの記録で相対参照として記録してもいいかも

nada
質問者

補足

ありがとうございます。 >1. D列で[Ctrl]+[↑]月の初めを選択 D列だと2月になってしまいます。A列でないでしょうか。 >2. [Ctrl]+[Shift]+[End] 終わりまで選択 これだと表全体がはいってしまいます。1月の一番後ろで、12回繰り返さなければなりません。 >3. [Ctrl]+[Home]A1セルの選択 これはシートを変えてですか。 >4. [Ctrl]+[↓]連続セルの1番下 3からすれば、すぐ下のセルになってしまいます。 以上がわかればうまいこと進むと思います。以上よろしくお願いします。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答No2です。 本文でA1000セルには次の式を入力して横方向にAJ100セルまでドラッグコピーします。 はA1000セルには次の式を入力して横方向にAJ1000セルまでドラッグコピーします。の誤りでした。

nada
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

12月まであるA列からAJ列まであるデータがシート1に有るとします。 例えばそれらのデータが999行以内に有るとして、作業のための行を1000行目に作ります。 A1000セルには次の式を入力して横方向にAJ100セルまでドラッグコピーします。 =IF(COLUMN(A1)=1,COUNT(A1:A999),IF(MOD(COLUMN(A1),3)=1,MAX($A1000:OFFSET(A1000,0,-1))+COUNT(A1:A1000),"")) 月の入力されている列についてその列の999行目までに入力されている月の数値の数が表示されます。 次にシート2に移ります。 シート2のA1セルからC1セルには項目名で月、日、単語などの文字を入力します。 A2セルには次の式を入力してC2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$1000:$1000),"",INDEX(Sheet1!$A$2:$AK$999,IF(ROW(A1)<=Sheet1!$A$1000,ROW(A1),ROW(A1)-INDEX(Sheet1!$1000:$1000,IF(COUNTIF(Sheet1!$1000:$1000,ROW(A1)),MATCH(ROW(A1),Sheet1!$1000:$1000,0)-3,MATCH(ROW(A1),Sheet1!$1000:$1000,1)))),IF(ROW(A1)<=Sheet1!$A$1000,COLUMN(A1),IF(COUNTIF(Sheet1!$1000:$1000,ROW(A1)),MATCH(ROW(A1),Sheet1!$1000:$1000,0)-3,MATCH(ROW(A1),Sheet1!$1000:$1000,1))+2+COLUMN(A1)))) これでシート1のすべてのデータが3列にまとめて表示されます。 そこでシート2のA、B,C列を選択してコピーし、E1セルを選択してから右クリックして「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。 その後にE,F,Gの列でG列の単語が入力されている最終行までを1行目から範囲として選択します。 「ホーム」タブの「並べ替えとフィルター」から「ユーザー設定の並べ替え」を選択します。 最優先されるキーを「単語」で「昇順」にしてOKします。

nada
質問者

お礼

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

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

左端が月で3列の組が1~3月ですね 組と組の間に列を追加するとソートは他の組に及びません。 ソートが終わった後追加した列を削除して名前を付けて保存で元のファイル を残したままに出来ます。

nada
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! VBAになってしまいますが、一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) 尚、データは1行目からあり、1ケ月は3列使用してあるとします。 Sub Sample1() 'この行から Dim i As Long, j As Long Application.ScreenUpdating = False For j = 4 To Cells(1, Columns.Count).End(xlToLeft).Column Step 3 i = Cells(Rows.Count, j).End(xlUp).Row Cells(1, j).Resize(i, 3).Cut Cells(Rows.Count, 1).End(xlUp).Offset(1) Cells(1, 1).CurrentRegion.Sort key1:=Cells(1, 3), order1:=xlAscending, Header:=xlNo Next j Application.ScreenUpdating = True 'この行まで End Sub ※ 一旦マクロを実行すると元に戻せませんので 別Sheetでマクロを試してみてください。m(_ _)m

nada
質問者

お礼

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

関連するQ&A