こんにちは。
早速ですが、例えばこんなカンジです。
[元データ(Sheet1)]
[1] 鈴木| 佐藤| 山田|・・・
[2] 茶 | 水 | |
[3] 魚 | | 酒 |
[4] | 肉 | 茶 |
[5] 肉 | 茶 | 魚 |
上記のようなデータから↓↓↓
1.行ごとに種類別に並べ替え
2.'=count(A2:D2)のような種類別の行集計列([数])を追加
3.[数]を基準に降順に並べ替え
↓↓↓
[集計データ(Sheet2)]
[1] 鈴木| 佐藤| 山田|・・・| 数
[2] 茶 | 茶 | 茶 |・・・| 3
[3] 肉 | 肉 | |・・・| 2
[4] 魚 | | 魚 |・・・| 2
[5] | 水 | |・・・| 1
[6] | | 酒 |・・・| 1
お解かりいただけますでしょうか(・_・;)?
今までは作業列(商品名)を挿入し、[VLOOKUP]→[COUNT]→値貼付→並べ替え→不要な商品名(行・列)を削除していましたが、度々では面倒に思い、マクロを組もうと試みました。
ですが、まだまだマクロ勉強中の私自身の頭が整理しきれず、行き詰ってしまいました。
アドバイスでも結構です。お力をお貸しください。
よろしくお願いいたします。
No.6
- 回答日時:
以下、1行目の「数」というセルを探し、数が0のものを非表示(削除ではなく)、さらに数をキーに降順ソートするマクロです。
突貫工事なので問題あれば言ってください。
Sub SortAndHide0()
'タイトルが「数」の列を探します。
For i = 1 To 100
If Cells(1, i) = "数" Then
r = i
End If
Next i
'全セルを選択
Cells.Select
'数が0のデータをフィルタで非表示に
Selection.AutoFilter Field:=r, Criteria1:="<>0"
'数を降順にソート
Selection.Sort Key1:=Range(Cells(2, r), Cells(2, r)), Order1:=xlDescending, Header:=xlYes
End Sub
以上マクロをVisual Basic Editorで追加しマクロを実行してください。
マクロ実行がめんどうであれば、シート状にフォームボタンを配置し、マクロを割り当てるとさらに楽に更新できます。
ありがとうございました。
先程、お2人の回答をもとにマクロを完成、動作テストの結果もダイジョブそうなものができました。
この回答をいただく直前に質問ページを見たきりで、勝手に試行錯誤している間にご回答をいただいたようです。
せっかくいただいたのに、まだ上記コードは試しておりませんが、改めて検証&参考にさせていただきます。
ありがとうございました。
No.5ベストアンサー
- 回答日時:
例データ Sheet1のA1:C7
鈴木佐藤山田
茶水・・
魚・・酒
・・肉茶
肉茶魚
リンゴみかん
・・・・柿
コード
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim cl As Range
k = 2 'Sheetのスタート行
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Range("B1:D1") = sh1.Range("A1:C1") '見出しSheet2へコピー
w = sh1.Range("iv1").End(xlToLeft).Column '右端列
MsgBox w
d = sh1.UsedRange.Rows.Count '最下行
MsgBox d
'--出てくる商品一覧作成
For Each cl In Range(sh1.Cells(2, "A"), sh1.Cells(d, w))
If cl = "" Then GoTo p01
For j = 2 To k
If sh2.Cells(j, "A") = cl Then GoTo p01
Next j
sh2.Cells(k, "A") = cl '新出商品セット
k = k + 1
p01:
Next
'----A列に出てくる商品にあわせて、その行に商品名セット
For j = 1 To w
For i = 2 To d
If sh1.Cells(i, j) = "" Then
Else
Set x = sh2.Range(sh2.Cells(2, "A"), sh2.Cells(k, "A")).Find(sh1.Cells(i, j))
If TypeName(x) = "Nothing" Then
Exit For
Else
sh2.Cells(x.Row, j + 1) = sh1.Cells(i, j)
End If
End If
Next i
Next j
End Sub
結果
Sheet2の A1:D9(・・は空白。桁づれ防止のため入れた)
・・鈴木佐藤山田
茶茶茶茶
水・・水
魚魚・・魚
酒。。酒
肉肉肉
リンゴリンゴ、・・
みかん・・みかん
柿・・・・柿
少数例しかテストできてません。
後、カウント数はCOUNTやCOUNTIF関数でできるでしょう(略)
カウント数の多い商品順はカウント数が出ている列でソートすれば
よい(略)
コードは短いことを心がけました。急いだため、力足らずで、本番でエラーが無いこと、本番への修正がうまくいくこと、我慢ができる程度内の時間内に終わる事を祈る。
こんにちは。ご解答ありがとうございました。
早速、試してみたのですが、問題がありました。
例えば、商品1・・・「茶」、商品2・・・「紅茶」の「茶」ように商品の中には同じ単語が存在するものがあります。
この場合、[Find(sh1.Cells(i, j))][Cells(i, j)="茶"]となると「茶」と「紅茶」が同一行に混在してしまいます。
何か、回避策等はありますでしょうか?
No.4
- 回答日時:
たとえばですが
#1の表に自動的に
1.「数」の列を参考に降順で並び替え
2.「数」が0のものを非表示(フィルタリング)
の操作が実行されれば、目的は達成できますか?
この回答への補足
こんにちは。
chem_taroサンがあげてくださった上記の実行が可能ならOKと考えています。
#3であげていただいた、「商品の追加」については、正直、考えていませんでした・・・。
新しい商品が登場するごとに「商品名マスタ」に追加(つまりは手動)しておけば、集計時には常に「商品名マスタ」>「元データの商品名」となるカナと。安易でしょうか!?
もしや、自動で追加までできるのですか??
ありがとうございます。
補足を書かせていただきましたが、可能であれば上記でご提案いただいたような内容で、方法をアドバイスいただけませんか?
よろしくお願いいたします。
No.3
- 回答日時:
VBAでマクロを組むならどんなことでもできるでしょうが、設計しようにもいまいちロジックが見えません。
一応、下の作例でも新しい商品ができたら、商品をつけたし、数式をコピーすれば動作するようには作っているのですが、商品の追加も自動で反映されるようにしたいってことかな?
もうちょっと詳しくお願いできますか?
No.2
- 回答日時:
(1)茶、肉、・・に当たる項目はあらかじめ出て(判って)いますか
(2)茶、肉、・この順序(上行から下へ)に拘り(決まり)がありますか。
(3)佐藤の列で、例えば「肉」は、上下行で2箇所以上に現れますか。
しかしVBAでやるにしても、ロジックが簡単ではないように思う。
この回答への補足
こんにちは。ご連絡ありがとうございます。
(1)項目はあらかじめわかっていますが、上記のほか、=COUNT()の結果が「0(ゼロ)」のものもあり、これらの行は削除したい。
(2)ならびに決まりはありません。
(3)列に対して項目の出現は1つまでとします。
一連の流れとしてマクロを組みたいと考えていますが、難しいでしょうか???
よろしくお願いいたします。
No.1
- 回答日時:
茶とか肉とか魚とかの項目はあらかじめわかってるのでしょうか?
あらかじめわかっているのであれば
|A||B||C||D|・・・|Z|
|・||鈴木|佐藤|山田・・・|数|
|茶||※||※||※|・・・|★|
|肉||※||※||※|・・・|★|
|魚||※||※||※|・・・|★|
|水||※||※||※|・・・|★|
|酒||※||※||※|・・・|★|
A列に項目の列をいれて
※には
=IF(COUNTIF(Sheet1!A$2:A$100,$A2)>0,$A2,"")
Sheet1の項目(A列)をカウントして1以上なら項目を表示、0ならヌル("")
★には横にCOUNTします。
わかりにくいですが、いかがでしょうか。
この回答への補足
ご解答の作業の後、「数」を基準に並べ替えをしたく、
また、質問では明記していませんでしたが「商品名」は上記のほか、=COUNT()の結果が「0(ゼロ)」のものもあり、これらの行は削除したく、一連の流れとしてマクロを組みたいと考えています。
よろしくお願いいたします。
chem_taroサン、こんにちは。アドバイスありがとうございます。
ですが・・・ゴメンナサイ。意図しているところまでたどり着けないのです。
参考にさせていただきたいのですが、chem_taroサンの回答では
私が[VLOOKUP]を使ったコトと同様の作業と思います。
[補足]を記載いたします。
内容をご理解いただけましたら、再度ご回答をお待ちしたいと思います。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Googleスプレッドシートの割合の関数と円グラフの並べ替えについて 1 2022/07/22 17:31
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) Excelのマクロを教えていただけないでしょうか? 1 2023/07/06 19:56
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワポで曲がった両矢印の簡単...
-
パワーポイント「スライドショ...
-
パワーポイントの表
-
Accessで Tabキーを押したとき...
-
パワーポイントで説明しながら...
-
Power pointって、スクリーンに...
-
音声マークを一括非表示にしたい。
-
エクセル・パワーポイントなど...
-
パワポ初心者で申し訳ありませ...
-
【パワーポイントのフォントが...
-
office2019プロダクトキー紛失
-
Powerpointを用いた論文の発表...
-
Powerpointを用いた論文の発表...
-
PowerPointのアニメーションで...
-
canvaでつくったプレゼン資料を...
-
パワーポイントで、プレゼン用...
-
発表用の資料作成
-
パワーポイント資料を、 インク...
-
パワーポイントのアニメーショ...
-
パワーポイントのプレゼンで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワポで曲がった両矢印の簡単...
-
パワーポイントの表
-
パワーポイント「スライドショ...
-
音声マークを一括非表示にしたい。
-
ホワイトボード 油性マジックの...
-
エクセル・パワーポイントなど...
-
パワーポイントで、プレゼン用...
-
PowerPointVBAでスライドマスタ...
-
PowerPointでスライドマスタの...
-
Power point で、アニメって作...
-
パワポ初心者で申し訳ありませ...
-
PowerPointで、作成されたファ...
-
パワーポイントで資料を作る時 ...
-
【パワーポイントのフォントが...
-
パワーポイントのアニメーショ...
-
ExcelのグラフをPowerPointに貼...
-
パワーポイント2019 図の透...
-
パワーポイントで、全てのスラ...
-
PowerPointのアニメーションで...
-
PowerPointで、線を点滅した感...
おすすめ情報