Gizport
1 回答
0
Share (facebook)
155
view
全般

回答本当にありがとうございました。 もう一点伺いたいことがあります。...

回答本当にありがとうございました。
もう一点伺いたいことがあります。 抽出の条件追加があった場合どう改変すれば良いでしょうか?


例えば、

行は1030行まである。
1行から1000行目は原価率30%以上、
1001行目は原価率20%以上、
1002行目は原価率40%以上、
1003〜1010行目は原価率50%以上、
1011〜1020行目は原価率10%以上、
1021〜1030行目は原価率30%以上
と抽出する場合です。

A2=IFERROR(INDEX(Sheet1!A$1:A$1000,SMALL(INDEX((Sheet1!$F$2:$F$1000<30%)*10^7+ROW($A$2:$A$1000),),ROW(A1))),"")
上記関数をどのように改変すれば良いでしょうか?
お教えください。
よろしくお願いします。

Excel 2010使用です。





<前質問>
office excelで、あるセルに特定の数字(%表示)が現れた際、そのセルがある行全体を別のシートに、できれば関数を使用し表示させてたいのですが、方法を教えてください。
office excelで、あるセルに特定の数字(%表示)が現れた際、そのセルがある行全体を別のシートに、できれば関数を使用し表示させてたいのですが、方法を教えてください。

例えば、
A列に「果物名」、Bに「個数」、Cに「売価」、Dに「原価」、Eに「利益」、Fに「原価率(%表示)」、Gに「利益率(%表示)」
とあり、それが数十行あります。
売価は日々(時には日中)変わるので原価率・利益率も変わりますが、
原価率のみに着目し、原価率が30%以上ある果物のみを、別シートにまとめて表示したいです。
ただ、別シートに表示する際は条件があったセルのある行全体をコピーする形で抽出したいのです。

毎日条件に合った行をオートフィルなどを手動で使用し抽出するのではなく、
関数を設定して自動で抽出できるようにしたいです。
Yahoo!知恵袋 4219日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
scplourbtsさん

【追記】
もし、この再計算のイベント処理が不便だったら、Sheet2を開いたときをイベントとする処理もできます。
必要なら「再質問」してください。

仕事がハードなので、、すぐに対応できないかも…ですが。。

【補足に対する追記】********

>数値は起動中にも変更されるので、それに伴いSheet2のマクロ結果も自動更新される。
つまり、Sheet1のF列の数式が変更された時に処理するわけですか?
じゃあ、Worksheet_Calculateのイベントを使えばできます。
下記のコードを指定どおり張り付けると、数式が再計算された時に自動実行します。

Private Sub Worksheet_Calculate()
Dim j As Long, c As Range
Dim myVal As Double, r As Long
Application.ScreenUpdating = False
With Sheets("Sheet2")
.Range("A:G").ClearContents
.Range("A1:G1").Value = Range("A1:G1").Value
j = Cells(Rows.Count, 1).End(xlUp).Row
r = 1
For Each c In Range("A2:A" & j)
Select Case c.Interior.ThemeColor
Case xlThemeColorAccent6
myVal = 0.1
Case xlThemeColorAccent5
myVal = 0.2
Case xlThemeColorAccent4
myVal = 0.4
Case xlThemeColorAccent3
myVal = 0.5
Case Else
myVal = 0.3
End Select
If c.Offset(, 5) >= myVal Then
r = r + 1
.Cells(r, 1).Resize(, 7).Value = c.Resize(, 7).Value
End If
Next c
.Activate
End With
Application.ScreenUpdating = True
End Sub

********** <シートモジュール> ************
<マクロの貼り付け方>>
上記のコードをコピーして、、
エクセルのSheet1のシートタブ内で右クリック→「コードの表示」でVBE画面を出して、、
広い画面のカーソルが「テカテカ」しているところにコードを貼り付けます。
もうこの画面はいらないので、、右上の「×」で元のシートに戻ります。

【最初の回答】
リクエストありがとう。
師走はかなり忙しくて、回答が遅れました。。

条件が複雑になり、抽出件数も大量になるようですから、関数ではやらない方が良いです。
マクロ案です。
おそらく今後、行数の変更や、パーセントを参照する範囲が変更される可能性があるので、、
最初に下図のようにSheet1のデータのパーセントを参照するためにA列を色分けしてください。
10%→オレンジ色
20%→水色
30%→塗りつぶしなし
40%→紫色
50%→緑色
*それぞれの色は、濃くても薄くても良いです。

ですから、提示された条件であれば、、
1行から1000行目は原価率30%以上→「何も色を付けません」⇒塗りつぶしなし
1001行目は原価率20%以上→色パレットの右から2列目「水色」
1002行目は原価率40%以上→色パレットの右から3列目「紫色」
1003〜1010行目は原価率50%以上→色パレットの右から4列目「緑色」
1011〜1020行目は原価率10%以上→色パレットの右端の「オレンジ色」
1021〜1030行目は原価率30%以上→「何も色を付けません」⇒塗りつぶしなし

ココまで出来上がったら、下記のコードを指定どおり張り付けてからマクロを実行します。
マクロ処理は、
1.最初にSheet2のA~G列をクリアします。
2.Sheet2の1行目にSheet1のA1:G1をコピペします。
3.Sheet1のA2から下方に色を判断して、同行のパーセントをチェックして処理します。
*処理時間は1秒もかかりません。

Sub Sample()
Dim j As Long, c As Range
Dim myVal As Double, r As Long
Application.ScreenUpdating = False
Sheets("Sheet1").Activate
With Sheets("Sheet2")
.Range("A:G").ClearContents
.Range("A1:G1").Value = Range("A1:G1").Value
j = Cells(Rows.Count, 1).End(xlUp).Row
r = 1
For Each c In Range("A2:A" & j)
Select Case c.Interior.ThemeColor
Case xlThemeColorAccent6
myVal = 0.1
Case xlThemeColorAccent5
myVal = 0.2
Case xlThemeColorAccent4
myVal = 0.4
Case xlThemeColorAccent3
myVal = 0.5
Case Else
myVal = 0.3
End Select
If c.Offset(, 5) >= myVal Then
r = r + 1
.Cells(r, 1).Resize(, 7).Value = c.Resize(, 7).Value
End If
Next c
.Activate
End With
Application.ScreenUpdating = True
End Sub

********** <標準モジュール> ************
<マクロの貼り付け方>
上記のコードをコピーして、、
エクセルのワークシート上で「Alt」+「F11」でVBE画面を出して、、
上のメニュー→「挿入」→「標準モジュール」をクリックして、
広い画面のカーソルが「テカテカ」しているところにコードを貼り付けます。
もうこの画面はいらないので、、右上の「×」で元のシートに戻ります。

<マクロの実行>
「Alt」+「F8」を押すと、マクロのダイアログが出てきますので、、
「Sample」が選択された状態で「実行」を押下します。。
Yahoo!知恵袋 4217日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
27
Views
質問者が納得scplourbtsさん 【追記】 もし、この再計算のイベント処理が不便だったら、Sheet2を開いたときをイベントとする処理もできます。 必要なら「再質問」してください。 仕事がハードなので、、すぐに対応できないかも…ですが。。 【補足に対する追記】******** >数値は起動中にも変更されるので、それに伴いSheet2のマクロ結果も自動更新される。 つまり、Sheet1のF列の数式が変更された時に処理するわけですか? じゃあ、Worksheet_Calculateのイベントを使えばでき...
4219日前view27
全般
92
Views
質問者が納得ここに換装事例があるね↓ http://homepage3.nifty.com/641/5_1.htm ただIDE接続のHDDだから新品では探すの大変かな? 中古ぐらいしか手に入らないかもしれない。 先月 秋葉のインバースでは400円でたくさん出ていたけども、DOS/V通り あたりのジャンクショップで探すか ヤフオクで探すかぐらいかな?
4558日前view92
全般
82
Views
質問者が納得録画の仕方が面倒でもよければTV用のデジタルチューナーを 取り付ければ録画出来ますこんなやつです http://kakaku.com/kaden/digital-tv-tuner/
4736日前view82
全般
42
Views
質問者が納得アベレージとイフ関数を使えば可能かと☆ 数学みたいな問題なのでちょっと具体的には言えませんが、イフ関数で○○の場合は130、××の場合も130とか、○と×でアベレージを…とか、、 分かりにくいですが、イフは結構役立ちますよ
4825日前view42
全般
41
Views
質問者が納得こんな感じでどうでしょう? D列の種目コードに年代の数字を入れています。 G2 =RANK(F2,$F$2:$F$11,1) H2 =SUM(IF($D$2:$D$11=D2,IF($F$2:$F$11<F2,1)))+1 と入れて[Ctrl]+[Shift]+[Enter]を押します。 数式の前後に "{","}"が付けばOK。 G2:H2 を G3:H11 までコピー。 色付けは条件付き書式で G2:G11を選択状態で 条件(1) セルの値が, 次の値以...
4870日前view41

取扱説明書・マニュアル

601view
http://www.toshiba-living.jp/.../manual.pdf?no=1073&fw=1&pid=568
108 ページ12.65 MB
もっと見る

関連製品のQ&A