- ベストアンサー
エクセルで使える関数を教えてください
- エクセルで同じ月や複数の月に重複する植物の名前だけを別の表にリストアップする方法を教えてください。
- 実際のデータ数は50~100で、植物の種類は約200あります。
- エクセルの関数を使って簡単にデータを整理できます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ご希望の操作は、重複のない名前のリストを作成したいということですね。 その場合は以下のような手順で重複のないリストを作成するのが簡単です。 別シートに元データをコピーしておき、2月以降のデータ部分を選択して(B2セルを選択してCtrl+Shift+↓キーのショートカット操作)、Ctrl+Xで切り取りし、Ctrl+←、↓のあとにCtrlを離して↓のショートカット操作でA列の一番下のセルの1つ下のセルを選択してCtrl+Vで貼り付けます。 同様にC列以降のデータをA列の下にコピー貼り付けし、A列にすべての名前をまとめます。 最後にA列を選択して「データ」タブの「詳細設定」で「重複するレコードは無視する」にチェックを入れて「OK」します。 このようにして得られた重複のない名前のデータ範囲をコピーして、どこかのセルに貼り付ければ完成です。
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
あまりお勧めしませんが、どうしても関数で表示したいなら、以下のような手順で可能です。 元データ(最大100行)がSheet1にあり、添付画像のようなレイアウトなら、Sheet2のA1セルに以下の式を入力し、下方向に100*12(列数分=1200行)の行までオートフィルします。 =INDEX(Sheet1!$A:$L,MOD(ROW(A1)-1,100)+2,INT((ROW(A1)+9)/100))&"" C1セルに以下の式を入力して表示データ数分(200行)だけオートフィルします。 =INDEX(A:A,SMALL(INDEX(((MATCH($A$1:$A$1200&"",$A$1:$A$1200,0)<>ROW($A$1:$A$1200))+($A$1:$A$1200=""))*10000+ROW($A$1:$A$1200),),ROW(A1)))&"" このようにすればC列に重複のないデータを表示できますが、このような配列数式を多数のセルに入力するとシートの動きが重くなるので、このようなブックは重複のない項目を取得する作業用だけのブックにするとよいと思います。 また、このデータを入力規則などのリストに使いたいなら、自動的に重複のないデータ範囲を取得することもできます。 #添付画像は各月10行以内の元データを処理した結果です(1つ目の数式で100を10にして計算した結果)。
お礼
再びていねいな説明を寄せていただきありがとうございます。 理解しようとしましたが、私には関数の意味がわかりませんでした。 意味は解らないのですが、ご説明の通りにやりましたら確かにできました。 おっしゃる通り、ファイルのサイズはかなり大きくなりました。 私には、関数やマクロを使わないで「重複を削除する」機能でやるのが無難なようです。 このたびは詳しく教えていただきありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
No.2です。 >欲を言えば、月別をとびこえてすべてのデータから一度に植物名だけを重複なく抜き出せるとよいのですが。 Sheet1のデータを重複なしに1度だけ表示したい!というコトですね? VBAになってしまいますが、一例です。 Sheet1は1行目が項目行でデータはA2セル以降にあるとし、 Sheet2のA列にデータを羅列するようにしています。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り、マクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, cnt As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") '←「Sheet2」は実際のSheet名に! wS.Range("A:A").ClearContents With Worksheets("Sheet1") '←「Sheet1」も実際のSheet名に! For j = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column For i = 2 To .Cells(Rows.Count, j).End(xlUp).Row Set c = wS.Range("A:A").Find(what:=.Cells(i, j), LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then cnt = cnt + 1 wS.Cells(cnt, "A") = .Cells(i, j) End If Next i Next j End With wS.Activate End Sub 'この行まで ※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
お礼
とても詳しい説明をしていただきありがとうございます。 マクロはよく分かりませんが、ご説明の通りにやってみましたら確かに一発で重複なく抜き出せました。こういう方法があることを知り大変勉強になりました。感謝します。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 関数での方法をご希望のようですので・・・ ↓の画像(小さいと思いますので、拡大してみてください) で上側がSheet1で下側のSheet2に表示するとします。 Sheet1に作業用の列を月数分だけ設けます。 (1~12月までが元データの場合、作業列はM~X列となります) 作業列M2セルに =IF(COUNTIF(A$2:A2,A2)=1,ROW(),"") という数式を入れX列までフィルハンドルでコピー → そのまま下へずぃ~~~!っとコピーしておきます。 そして、Sheet2のA2セルに =IFERROR(INDEX(Sheet1!A:A,SMALL(Sheet1!M:M,ROW(A1))),"") という数式を入れフィルハンドルで、列・行方向にコピー! これで画像のような感じになります。 m(_ _)m
お礼
ていねいな解答をしていただきありがとうございます。 理解するのに時間がかかりましたが、関数を使ってこのようにすればできることがやっと分かりました。ありがとうございました。 欲を言えば、月別をとびこえてすべてのデータから一度に植物名だけを重複なく抜き出せるとよいのですが。
- p-p
- ベストアンサー率35% (1977/5635)
COUNTIFを使えば ヒマワリがいくつあったとか数えられますよ 例) =COUNTIF(A1:A10、"ヒマワリ") ヒマワリのとこはリスト票を作っておいてセル名でも良いです B1など http://kokodane.com/kan12.htm
お礼
さっそくのご解答、ありがとうございます。 私の説明がうまくなくてすみません。ヒマワリやウメ等何回か出ていますが、ヒマワリ、ウメ、サクラなど出てきている植物名をリストアップしたいということで質問しました。お手数をかけてしまいすみませんでした。
お礼
ていねいに解答していただきありがとうございます。 エクセルに、関数を使わないでこんなことができる機能があったとは知りませんでした。 しかも。簡単な操作でできるのでおどろきました。 ありがとうございました。