A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ピボットテーブルで処理するのが標準的な方法ですが、
参考までに数式を使って処理する方法を。
以下、元データがSheet1の$A$1:$A$99にあり、Sheet2に抽出するとします。
(元データのシートは変更しません)
-----------------------------------------------------------------
●A案:作業列を使って数式で処理
1.Sheet2のA1セルを、
=IF(COUNTIF(Sheet1!$A$1:A1,Sheet1!A1)=1,COUNTIF(Sheet1!$A$1:$A$99,Sheet1!A1)+1/(ROW()+1),"")
として、99行目まで下方にフィル
2.Sheet2のB1セルを、、
=INDEX(Sheet1!$A$1:$A$99,1/MOD(LARGE($A$1:$A$99,ROW()),1)-1)
として、#NUM!が返るまで下方にフィル
※初出のデータについて、度数に行番号の逆数を加えた値を振る
※度数が大きいものから順に選び、端数の逆数(行番号)をとって、該当行の値を返す
-----------------------------------------------------------------
●B案:作業列を使わず数式一発で処理
1.B1セルを選択
2.数式バーに下記の数式を入力
=INDEX(Sheet1!$A$1:$A$99,1/MOD(LARGE(((MMULT((Sheet1!$A$1:$A$99=TRANSPOSE(Sheet1!$A$1:$A$99))*(ROW(Sheet1!$A$1:$A$99)>TRANSPOSE(ROW(Sheet1!$A$1:$A$99))),ROW(Sheet1!$A$1:$A$99)))=0)*(Sheet1!$A$1:$A$99<>"")*(COUNTIF(Sheet1!$A$1:$A$99,Sheet1!$A$1:$A$99)+1/(ROW(Sheet1!$A$1:$A$99)+1)),ROW()),1)-1)
3.Ctrl+Shift+Enterで確定
4.B1セルを#DIV/0!が返るまで下方にフィル
通常の数式はEnterキーで確定しますが、
こちらの数式は配列数式なので、CtrlとShiftを押しながらEnterで確定してください。
参考として書いてみましたが、複雑、長い、重い、の三重苦ですね。
また、MMULTを使っているので元データが5460を超える場合には対応できません。
-----------------------------------------------------------------
エラー処理については、必要に応じて、
・IFERROR関数をかぶせる(Excel2007)
・条件付き書式で白フォントにする
・ページ設定で印刷しないようにする(Excel2002以降)
・=IF(ISERROR(数式),"",数式)で、長さゼロの文字列を返す
・気にしない
その他ご自由に。
いずれもExcel2003で動作確認済。
No.1
- 回答日時:
(1)データ内容(りんごなど)のユニークな列(1回階しか現れない列)を同一シートに作る。
フィルタオプションで「重複するレコードは無視する」を使う。
参考
http://q.hatena.ne.jp/1135141460の2番回答
(2)Countif関数で件数を出す。
(3)(1)の列+(2)の列でソートする
ーー
色々注文をつけているようだが、上記で不満な点は何かな。
ーー
フィルタを使わないなら
第1行は空白にして
例データ A2:A11
A列 B列
a1
b2
a
a
a
b
c3
a
b
c
B列は =IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,""
と入れて下方向に式を複写する。
これに対しSheet2ナリで、
=INDEX(Sheet1!A:A,MATCH(ROW()-1,Sheet1!B:B,0),1)
と入れて下方向に式を複写する。
結果
Sheet2
a
b
c
#N/A
以上imogasi方式でGoogle照会してもらえれば、類似質問が沢山出る
し#N/Aの消し方もわかると思う。
しかしエクセルは操作のソフトであり、関数でやるのはどうかと思うが、何でも関数の質問者も多い。
(2)またピボットテーブルででもできる
(3)関数FREQUENCYでは文字列の出現頻度は無理のよう。
(4)VBAでもそれほどロジックは難しくない。
初回の出現時にセルに書き出し(表)件数は1とし、毎回(行のデータについて)セルのその表を調べて、該当すれば件数を+1していく。その後はソートする。
この回答への補足
今回質問させていただいたのは、
多数のデータシートごとに集計するにあたって、
元のデータシートをできるでけ変更せずに、
(個々のデータシートにデータ列を作るのは非常に手間がかかり、
かつミスを生じる原因となるので...)
なるべく簡単かつ確実に集計結果を参照できないか
と考えたためです。
関数式を希望したのは、このような理由からでした。
どうもありがとうございました。
(1)とても参考になりました。
(2)ピボットテーブルの使い方も学習してみようと思います。
(3)数字でしたら可能なようですね。当初、この方法でできないかと考えていました。
(4)VBAの知識はまったくありませんので、またの機会にしたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Googleスプレッドシートの割合の関数と円グラフの並べ替えについて 1 2022/07/22 17:31
- 統計学 名義尺度と間隔尺度の相関について 1 2022/09/06 18:15
- Excel(エクセル) Excel 効率的な名簿と得点の管理の仕方 8 2022/08/07 08:15
- Excel(エクセル) Excel 郵便番号順に並び変えたい 同じ番号が複数あるとき 4 2022/04/28 18:35
- Google Drive Googleスプレッドシートについて質問です。 今作っているデータで、 シート1→ベタ打ちでひたすら 2 2022/05/18 14:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Excel(エクセル) excelで同日を除いて数えたい 5 2023/01/15 22:08
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについて教えてください
-
【Excel】数字を3倍にし、なお...
-
エクセルVBA、別ブックへ転記す...
-
エクセル マクロ チェックボックス
-
Excel分析ツールでのポアソン回...
-
【マクロ】顧客番号にて一致さ...
-
【マクロ】名前を保存する際に...
-
エクセルのデーターが2か月前の...
-
UNIQUE関数が使えないバージョ...
-
エクセル共有したが、アクセス...
-
Excelでセルの値が同じか...
-
(マクロ)データをAブックからB...
-
Excel フィルターを掛けた状態...
-
エクセル②
-
エクセルを使っていて2024/5/15...
-
Googleスプレッドシートでファ...
-
エクセルで不等号記号(≠)が上に...
-
Win10でExcel VBA GetPhonetic...
-
Excelで縦軸の書式を0:00形式の...
-
エクセル:一覧表に存在する文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報