この表についてなんですが、これは実際の表を小さくしたもので、実際は100種類以上の果物があり、月も12月までです。
この表、1月~4月まで果物の名前とその個数が書いてありますが、月ごとに果物の場所と種類が増えたりとで、ばらばらです。実際は100種類以上あるので、ばらばらだととてもみにくいのです。これをエクセルの機能を使って、たとえばメロンならメロンの個数が、各月ごとに名前と個数が横一列に揃えれないでしょうか?
追記 1月にはあっても4月にはなくなる種類の果物があっても大丈夫なように。逆も同じで1月になくて4月に種類が増えても大丈夫なように。
とりあえず、作りたい表はある一定のくだものを選択したら各月ごとにその数が横一列にみやすいようにでるようしたい。けして合計の数ではないです。
自分でいろいろためしたのは、フィルーターをかけたり昇順降順など簡単な機能は一通りためしました。
フィルターのだめな点は、全部にフィルターがかかってめろんを選択するとそのめろんの行以外を消すだけで、その同じ行のほかのくだものまではいってきてしまうこと、個別にフィルターをかけて昇順などでならびかえても違う果物がはいっているので、月ごとに行のばらつきができてしまうこと。
なにか関数とか別の機能を使ってみやすくする方法はありますか?
No.3ベストアンサー
- 回答日時:
こんばんは!
VBAになりますが、一例です。
出現順に表示させる方法はどうでしょうか?
今回は行合わせ重視でやってみましたので、
↓の画像のようにデータがない月は空白になります。
元データはSheet1にあるとします。
Sheet2を作業用のSheetとして使用していますので、Sheet2は使っていない状態にしておいてください。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub 並び替え() 'この行から
Dim i As Long, j As Long
Dim lastRow1 As Long, lastRow2 As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
Application.ScreenUpdating = False
With Worksheets("Sheet1")
'▼Sheet1のA列データをそのままSheet2のA列に表示
lastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row
If lastRow1 > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow1, "A")).Copy wS.Range("A2")
End If
'▼Sheet1の3行目~12月(24列目)まで
For j = 3 To 24 Step 2 '
lastRow1 = .Cells(Rows.Count, j).End(xlUp).Row
'▼Sheet1のj列の2行目~最終行まで
'すでに出現しているデータの場合、Sheet2の同じ行のC列にコピー&ペースト
For i = 2 To lastRow1
Set c = wS.Range("A:A").Find(what:=.Cells(i, j), LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
wS.Cells(Rows.Count, "A").End(xlUp).Offset(1) = .Cells(i, j)
lastRow2 = wS.Cells(Rows.Count, "A").End(xlUp).Row
.Cells(i, j).Resize(, 2).Copy wS.Cells(lastRow2, "C")
'▼初出現データの場合はSheet2のA列最終行の一つ下へデータを追加
Else
.Cells(i, j).Resize(, 2).Copy wS.Cells(c.Row, "C")
End If
Next i
'▼Sheet2のC・D列に表示されたデータをSheet1のj列にカット&ペースト
lastRow2 = wS.Cells(Rows.Count, "C").End(xlUp).Row
Range(wS.Cells(2, "C"), wS.Cells(lastRow2, "D")).Cut .Cells(2, j)
wS.Range("C:C").Clear
Next j
wS.Cells.Clear
.Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
End With
Application.ScreenUpdating = True
End Sub 'この行まで
※ 関数でないので、Sheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
これをコピー、ペーストして少し手直ししたら思っていた表ができあがりました。これでフィルターをかけたら、以前の表だとばらばらだったのがしっかりと種類別になりとてもみやすくなりました。
100種類以上x12を手直しするのはかなりの時間がかかるので、短時間でできたので感謝してます。 私自身マクロの知識がないので、コピーだけで次に生かせないのが残念ですが、今回は急ぎだったので助かりました。 ありがとうございます!
No.2
- 回答日時:
回答No.1です。
別シートにVLOOKUP 関数を駆使した集計用の表を作る
方法も考えられます。
○元の表
A B C D
1 4月 5月
2 ----------------------------------------------
3 りんご 3 マンゴー 10
4 超リンゴ 10 怒りのマンゴー 2
:
○集計表
A B
1 果物名 4月 5月
2 -----------------------------------------------------------------------
3 りんご =VLOOKUP(A3,元の表!A$3:B$100,2,FALSE) =VLOOKUP(A3,元の表!C$3:D$100,2,FALSE)
4 超リンゴ =VLOOKUP(A4,元の表!A$3:B$100,2,FALSE) =VLOOKUP(A4,元の表!C$3:D$100,2,FALSE)
:
これで集計表に「元の表」のデータが集約されます。
【注意点】
・集計表の果物名のリストは自分でまとめて作らなくてはなりません。
VLOOKUP関数は単に「元の表の個数データを集める」ことしか
しません。
・「元の表」の果物名は名前の順でソートしてある必要があります。
・集計表には「元の表」にない果物は #N/A と表示されます。
これが嫌であれば、ISERROR 関数を使って回避します。
(具体的な方法は GOOGLE で VLOOKUP ISERROR で検索
してみてください)
各月ごとに新しくはいった果物、または前の月にはあって次の月になくなってしまう果物の種類全部を調べて、すべての果物名のリストを作ることができなかったので、回答No3さんのアンサーをベストアンサーにさせていただきました。
VLOOKUPはよく使う関数だと思うので、しっかりと勉強して次使う機会あったら使わせていただきます。
ありがとうございました^^
No.1
- 回答日時:
月ごとに果物リストを作るのではなく、全体の果物リストに対して月の
個数を書いていったほうが良いように思います。
果物名 4月 5月 …
------------------------------------
りんご 3 *
超リンゴ 10 *
メタルリンゴ 2 *
マンゴー * 10
怒りのマンゴー 10 2
------------------------------------
その月に売らない果物は個数を * にします。
売らない果物は最初に決まると思うので、月の入力前に * を入れて、
実際の入力時は * をフィルタで非表示にするか、並び替えで表の下に
追いやれば良いでしょう。
この表なら、何も考えなくても横に果物の月別個数が並びますよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) DATEDIFで作成した勤務年数の並べ替えがうまくいかない 3 2023/07/31 17:09
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- VPN フリー wi-fi は安全ですか 自宅での wi-fi VPNを使用したら良い? 2 2022/05/31 04:12
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- Excel(エクセル) <スプレッドシート>採用進捗 グラフ作成について 3 2022/10/23 15:52
- 日本語 「~人」と「~名」の使い分け 2 2022/06/02 11:59
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報