AIと戦って、あなたの人生のリスク診断 >>

在庫管理をしています。
在庫表のようなものを作りたいのですが、うまく行かなくて困っています。よろしくお願いします。

うまく表現できないのですが、たとえば、シート1に、
品名   数量
いちご  10
もも   20
いちご  30
りんご  20
もも   15       と、あるものを、

品名
いちご  10
いちご  30
もも   20
もも   15
りんご  20
と、計算式で並び替えて別のシート(シート2)に一覧表にしたいと思っています。

今、品名の個数をカウントしていちごの1個目、いちごの2個目・・と、
やろうとしているのですが、うまく行かず行きません。
在庫は常に変化するので、何かよい方法がないものかと思っています。

品名に番号をつけて品名の数をカウントとしてみましたが、そこでとまっています。
「シート1」の「品名」の「★カウント」を表示できるような関数というのはあるのでしょうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

> オートフィルタの並び替え表示とはどのようにするのでしょうか?


オートフィルタを設定するとタイトル名の横に「▼」マークが付きます。

その「▼」を押して 表示される項目の一番上の方に
「昇順で並べ替え」「降順で並べ替え」というのがあります。

http://support.microsoft.com/kb/883042/ja
ここの「4」の時に 一番上に表示されているやつです。

※上記の機能は Excel2002以上に限った話です。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
品名に番号つけて並び替えをやってみましたが、
品番順に並び替えがうまく出来ませんでした・・・。
何がいけないのか・・・。

でも、これでうまく出来れば何とかなりそうです。
もうしばらくがんばってみます!!

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

お礼日時:2007/11/07 10:48

(1)エクセルのソート操作さえ、させないで、並べ替えをやりたいということ。


じゃあ長々質問文に書くまでもなく、そう1文書けば済むものを。
>エクセル云々以前の問題の方に、からそうなるのかな。
ーー
順番はイチゴの中では入力したときの順序を保存したい(崩さないようにしたいということかな。
行番号を作業列に振れば実現します。
ーー
いちご、もも、りんごの順はどう考えるの。
並び替えの質問らしいが、どの点質問に書いてないのはおかしい。
==
関数式で考えて見ます。相当複雑ですが、簡単なものは出るかな。
品名数量参考1参考2コード
いちご1011101
もも2021201
いちご3012102
りんご2031301
もも1522202
もも1223203
いちご2513103
C列参考1は
=IF(COUNTIF($A$2:A2,A2)=1,MAX($C$1:C1)+1,INDEX($C$2:$C$100,MATCH(A2,$A$2:$A$100,0),0))
D列参考2は
=IF(COUNTIF($A$2:A2,A2)=1,1,COUNTIF($A$1:A2,A2))
参考1*100+参考2を計算して
コード列は
=IF(COUNTIF($A$2:A2,A2)=1,MAX($C$1:C1)+1,INDEX($C$2:$C$100,MATCH(A2,$A$2:$A$100,0),0))*100+IF(COUNTIF($A$2:A2,A2)=1,1,COUNTIF($A$1:A2,A2))
結果はE列
の通り
ーー
普通はこれでソートすればよい。
ソートw使わないなら
これを別シートに値だけを貼り付けて
関数Smallでコードの小さい順に取り出す。
ーー
H3に=SMALL($E$2:$E$100,ROW()-2)
下方向に式を複写する。
I3に
=INDEX($A$1:$A$100,MATCH(H3,$E$1:$E$100,0),0)
下方向に式を複写する。
結果
101いちご (略)
102いちご
103いちご
201もも
202もも
203もも
301りんご
他の列は類推でできますが長くなるので略。
ーー
多分複雑なやり方しかない。関数でやるのはあきらめては。
VBAで無いと
>エクセル云々以前の問題の方に、相手に処理するのはできないように思う。
    • good
    • 0
この回答へのお礼

私の説明が長々しく余計にわかりづらくしてしまい申し訳ありませんでした。

やはり関数では難しそうです。
でも、参考にさせていただきます。
ありがとうございました。

お礼日時:2007/11/07 10:45

追加です。



> エクセル云々以前の問題の方に行ってもらうので
「並べ替えボタン」を作って マクロで対処されてはいかがでしょう。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
印刷も行いたいのでやはりマクロ処理でボタンを作った方がいいんですかね?

ところで、今、オートフィルタもやってみたのですが、
オートフィルタの並び替え表示とはどのようにするのでしょうか?

お礼日時:2007/11/06 16:32

別列に連番を振っておいて「品番」「品名」「数量」の3つにオート


フィルタを設置するだけで良いのでは? 「品名」昇順でソートする
か 「品番」昇順でソートするかで 表示を切り替えられるはずです。

> 「シート1」の「品名」の「★カウント」を表示できるような関数と
> うのはあるのでしょうか?
数式を組み合わせていけばできなくはないですが重くなります。
普通は ピボットテーブルで集計すると思います。
    • good
    • 0

>計算式で並び替えて別のシート(シート2)に一覧表にしたい


⇒計算式より、シート1のデータをシート2へコピー&ペースト後、シート2でデータ→並び替えが簡単ですが如何でしょうか。
>品名の個数をカウント
仮にA列を品名としたら、=COUNTA(A:A)-1で如何でしょうか。
因みに「-1」は、見出し行の調整です。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
確かに並び替えすればいいのですが、エクセル云々以前の問題の方に行ってもらうので、計算式で毎回自動で出来れば・・と思っています。

お礼日時:2007/11/06 15:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL 数式・関数でソートしたい

数式・関数でソートする方法を教えてください。

A列に日付、B列に品名、C列に個数が入ったSheet1があります。
これを日付順にソートしたSheet2をつくりたいと思っています。

Smallでやろうと思ったのですが、同じ日付が何回もでてくるために、うまくいきませんでした。

よろしくお願いします。

Aベストアンサー

こんばんは。

昨日のご質問にもお答えしたものです。
これも同じ考えた方でできますよ。

■作業列を使う方法です。
作業列はどの列を使用してもかまいません。
ここでは例として Sheet1の J列を使います。

A列の日付が 2行目から始まっているとすれば、
Sheet1の J2に↓( J列の表示形式は 「標準」 のままにしておいてください)
----------------------------
=IF(A2="","",A2*10000+ROW())
----------------------------
◆上の数式を、A列のデータ最終行までコピーしてください。
今後もデータが増えるのなら、予想される最大行までコピーしておいてください。
( 最大500件だと思えば、J500 までコピー)
3.85E+08 ←のような感じで表示されても気にしないでください。
列幅を広げればちゃんと表示されます。 
作業列が目障りなら非表示にしてください。

Sheet2 の A2に↓
----------------------------------------------
=IF(COUNT(Sheet1!$J:$J)<ROW(A1),"",INDEX(Sheet1!$A:$C,MATCH(SMALL(Sheet1!$J:$J,ROW(A1)),Sheet1!$J:$J,0),COLUMN(A1)))
----------------------------------------------
作業列を J列と仮定しています。
J列以外の列を作業列に使う場合は、数式の $J:$J (3ヶ所)をその列記号に変更してください。
絶対参照($)にしているところは必ず絶対参照にしておいてください。
ROW(A1)、COLUMN(A1) の A1はそのままにしておいてください。
◆この数式を、そのまま右にC2までコピー
そのまま(A2~C2が選択された状態で)下に、Sheet1 のデータ件数分コピーしてください。
今後もSheet1のデータが増えつづけるのなら、予想される最大行までコピーしておいてください。
A列の表示形式を「日付」、B・C列の表示形式を「標準」にしてください。
  ◇
ROW(A1)、COLUMN(A1) の意味については、昨日のご質問の補足にお答えしておきましたので、そちらをご覧ください。

こんばんは。

昨日のご質問にもお答えしたものです。
これも同じ考えた方でできますよ。

■作業列を使う方法です。
作業列はどの列を使用してもかまいません。
ここでは例として Sheet1の J列を使います。

A列の日付が 2行目から始まっているとすれば、
Sheet1の J2に↓( J列の表示形式は 「標準」 のままにしておいてください)
----------------------------
=IF(A2="","",A2*10000+ROW())
----------------------------
◆上の数式を、A列のデータ最終行までコピーしてください。
今後もデータ...続きを読む

QExcel昇順関数について

データの昇順・降順方法として、メニューから「データ」→「並べ替え」とする方法がありますが、関数で同じことを実現できるものはあるのでしょうか?(例)A列に上から、「5、3、1、4、2」と並んでいるときに、(関数を入力した)B列上から「1、2、3、4、5」と表示する。

Aベストアンサー

A1からA5までデータが入っているものとして、
作業用としてC列に1行目から順位(1,2,3、・・・・)を作っておき、セルB1に
=LARGE($A$1:$A$5,C1)
とし、下の行までコピーします。

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセル SMALL の機能を文字列でもできないか

数値に対し小さいほうからn番目というのは
SMALLで出来ますが、2文字以上(最低15文字くらい
まで)の文字列に対しそれを行う方法は無いでしょうか?

なんらかの式の組み合わせで出来ないものでしょうか?

要するに名前(よみがな)などを昇順(または降順)に読み込み
ソートさせた状態で別表に表示させたいのですが
文字1文字ならCODEで何とかなるのですが
2文字以上となると・・・

VB等のプログラムは一切使わず関数の駆使でなんとかならない
ものでしょうか?

Aベストアンサー

◆先程の回答で、順位を表示させなくてもできます
   A       B
1  ああああ  ああ
2  ああ     あああ
3  あい     ああああ
4  あう     あい
5  あいあい  あいあい
6  いいい   あう
7  あああ   いいい

B1=IF(COUNTA(A:$A)<ROW(),"",INDEX(A:A,MATCH(ROW(),INDEX(COUNTIF($A$1:$A$10,"<="&$A$1:$A$10),),)))
★下にコピー

QExcelで複数列かつ複数行分の一括並べ替えについて教えてください

Excel2003を使っています。
【例】
A1:N530の表の中の一部分D1:I530範囲(6列で530行)部分のみを
列単位で一括で並べ替えしたいと思っております。
D1:I530範囲には6列に23、96、11、106、72、49といったように530行全てランダムに数値が入っております。これを各行毎に全て左から昇順に530行分一括並べ替えしたいということでございます。
エクセル機能の「データ」→「並べ替え」→「現在選択する範囲を並べ替える」→「オプション」→「列単位」を指定して列単位に並べ替えは出来たのですが1行ずつしかソート出来ません。
このやり方では530回並べ替え作業をすることになり、時間的に余裕がないのでこの場合にExcel2003の機能で一括で530行分を列単位でもって左から並べ替えをする方法があるでしょうか?
ちなみにExcel2007もまだ使ったことないですが所持しています。
仕事上緊急でご質問させていただいております。是非助けてください。

Aベストアンサー

>セル背景色も一緒にソート移動されているかなと思った・・・・・
下記マクロを試してください。

Sub test1()
Dim r As Range
Dim srng As Range

Set srng = Range("D1:D530")
For Each r In srng
'列単位昇順並べ替え
r.Resize(, 6).Sort Key1:=r, _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
Next
End Sub

Qオートフィルタ 並べ替え 二つの条件

今の状態の
学年組
11
21
31
12
22
32

から

学年組
11
12
21
22
31
32

にオートフィルタを使って並べ替えをするにはどうすればいいでしょうか?

学年は小さい順で、学年に対する組も小さい順に並べ替えたいです。

Aベストアンサー

オートフィルタはフィルタリングするツールで、並べ替える機能は持っていません。
ごく普通の並べ替えを2段階に行い、並べ替えの優先順位を学年、組の順番にしてください。

http://www4.synapse.ne.jp/yone/excel2010/excel2010_sort1.html

Qエクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください

例えばこんなデータなのですが、

2002/07/01 99 25 36
2002/07/05 55 33 25
2002/08/01 80 20 51

日付の入っている列を検索して、2002/07/01から2002/07/31
の範囲ならば、その行のデータを別のシートに抽出したいのですが、
日付の範囲は関数でどうすればよいのか分かりません。ACCESSなら
between 9999/99/99 and 9999/99/99って感じで簡単にできるの
ですが。。。エクセルの関数だとIF関数の論理式にAND関数を使って
>=2002/07/01
<=2002/07/31
と入力したので、2002/07/05ならば、いずれもTRUEなので、値を返して
くれると考えたのですが、なぜかダメでした。
(↓こういう入力をしました)
=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

Aベストアンサー

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

------------余談--------------------------
ご質問の条件例の場合特例で 2002/7でればOKなので

=IF(TEXT(Sheet2!A1,"yyyym")="20027",Sheet2!A1,"該当月ありません")

でも可能ですね!

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

--...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで名簿をあいうえお順に並べ替える方法。

タイトル通りなのですが、エクセルで名簿をあいうえお順に並べ替える方法を教えて下さい。
きっと単純な事なのでしょうが、分からなくて困ってます。
宜しくお願いします。

Aベストアンサー

 名簿の氏名をキーにして50音順に並べたいということだと思いますが、残念ながらフリガナが入力されてなければ漢字の氏名だけで正しい並べ替えは出来ません。
 
 いくらExcelのバージョンが新しくても漢字には音読みと訓読みがあり、漢字でソートするとほとんど音読みで並べます。
 だから例えば安永は「あんえい」に吉田は「きちでん」と読んで並べます。日本名の大半は訓読みですから期待する結果はほとんど得られません。

 ただし一つだけ試して欲しいのは、氏名の列の右にとりあえず1列挿入し、仮に氏名セルのトップがA2だとするとB2に次の式を入力して下方にコピーしてみてください。
=PHONETIC(A2)
 もし氏名を入力するとき読みどおり入力してあればその読みがB2に出るはずです。
 ダメもとでやってみる価値はあると思います。
 駄目なときはフリガナを入力してソートするしかないでしょうね。


人気Q&Aランキング