痔になりやすい生活習慣とは?

IF関数とVLOOKUP関数で複数条件を組み合わせたい

IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,1,IF(N5>0,0.5,0.25)

上記の数式を下記の複数条件を組み合わせた数式にしたいです。どのように書き換えたらよいでしょうか?

①リストで検索した数字がO4と合致して、かつN5>0だったら100
②リストで検索した数字がO4と合致せず、かつN5<だったら25
③リストで検索した数字がO4と合致して、かつN5<0だったら75
④リストで検索した数字がO4と合致せず、かつN5>0だったら50

質問者からの補足コメント

  • ご丁寧にご教授頂きましてありがとうございます。

    No.3の回答に寄せられた補足コメントです。 補足日時:2019/04/05 10:03

A 回答 (4件)

済みません。




式を 謝罪の上、
訂正させてください。


現行、
=IF(N5>0,
 IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,
  100,
  25,
 )
 IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,
  75,
  50
 )
)


改訂後、

=IF(N5>0,
 IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,
  100,
  25,
 ),
 IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,
  75,
  50
 )
)
             以上、

申し訳ない。
この回答への補足あり
    • good
    • 1
この回答へのお礼

すみません、誤って補足にお礼をしてしまいました。
訂正版までご教授頂きまして、ご丁寧にありがとうございます。
検証させて頂きます。

お礼日時:2019/04/05 10:35

N5は0になることはないのですか?

    • good
    • 1
この回答へのお礼

ご返信頂きましてありがとうございます。

N=0になることはあります。

それを回避する為、今回質問させて頂いたIF(VLOOKUP~の式の前に下記の数式で条件設定しています。

=IFERROR(IF(MATCH(J44,J:J,0)=ROW(),IF(OR(L44(実績)=0,N44(達成/未達成額)=0),0,(リスト!$B$18-(COUNTIFS(L$5:L$1000(実績),"<>0",N$5:N$1000(達成/未達成額),">"&N44(達成/未達成額))*2+COUNTIF(N$5:N$1000(達成/未達成額),N44)-1)/2)

①L列実績とN列達成/未達成額が0は対象外とする。
②同順位を除く、N列とL列の平均順位に「IF(VLOOKUP~」の条件に基づいて計算をしたい
③L列実績と達成/未達成額がどちらもマイナスの時も計算の対象外とする

ただ、現状③も計算に含まれてしまっており、③を対象外としたいのですが今回質問させて頂いた数式に組み込むことは可能でしょうか?

お礼日時:2019/04/05 10:54

N5=5だった場合の 処理が、


抜け出ますが。


まぁ、
論理演算子を 条件判断内で、
用いれば いいものと、
思います。

http://www4.synapse.ne.jp/yone/excel2013/excel20 …


又、
IF構文は、
可能な限り ネストせず、

値なら +で、
文字列なら &で、
接続して、

列記するように してくださいね。


とはいえ、
例えば、

=IF(N5>0,
 IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,
  100,
  25,
 )
 IF(VLOOKUP(J5,リスト!$E:$F,2,FALSE)=O$4,
   75,
   50
  )
 )
    • good
    • 1

先ずは、IF分だけで完成させてください。


そして、最後にその一部をVLOOKUPに置き換えれば良いです。

なお、IF関数の階層は間違いの元なので、なるべくは利用を避けたほうが良いです。
例えば、
①と③を組み合わせた判定は、以下に置きかえられます。
 =(検索数値=O4)*((N5>0)*100+(N5=<0)*75)
ご質問の場合、N5=0が適用できないので、ご注意を。
    • good
    • 1
この回答へのお礼

ご教授いただきましてありがとうございます。注意点を含め、ご説明頂きありがとうございます。

早速検証してみます。

お礼日時:2019/04/04 21:48

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Qエクセル データの入力規制「リスト」でこんな事できますか?

エクセルでこんな事できますか?
並列したQ列 R列があり、
また、添付には表記されていませんが、
その隣にS列 T列があり、
Q列、S列は、「コード」という事で、
Q列は1,2,3,4,5,6,7,8,9,10
S列は11,12,13,14,15,16,17,18,19,20
です。
R列は、「材質」でQ列に対応し、添付ファイルのように10項目
T列も「材質」でS列に対応し、10項目あります。

R列 T列「材質」を見て Q37セルにコードを入力したく、
その時、ドロップダウンリストとして、R列、続けて、T列の項目を表示したいです。

データの入力規制「リスト」で、できそうかと思い、頑張っていたのですが、
うまくいかず困っています。
データの入力規制「リスト」にはこだわりませんが、
マクロはできるだけ使わず完成したく思います。
エクセル詳しいかたご教授よろしくお願いします。

Aベストアンサー

あー…
入力規則はあくまでも、データ入力を補助するための機能ですからリストと違う文字を反映させることはできませんよ。

例えばリストデータは、01りんご・02プリンのように作って置いて、コードを出す時に
=LEFT(Q37,2)*1
と入れておくとか?

QExcelの関数で、下記のように報告値が自動で表示されるようにしたいです。 基本的には有効数字2桁表

Excelの関数で、下記のように報告値が自動で表示されるようにしたいです。
基本的には有効数字2桁表示なのですが、A列に入力した下限値の桁までの表示にしたいです。3行目、4行目のように有効数字1桁の場合もあります。5行目のような場合もあります。1日もがいてみましたが、どなたかご教授頂けたら大変助かります。

Aベストアンサー

No.4の回答者です。
No.5の回答者さんが指摘しているように、報告値で表示をする桁の
問題だと思います。

No.4の回答では、報告値に合わせるために強引な条件付き書式での
表示をしているので、計算値の0.995283を小数点一桁の1.0と表示
するようにしていますが、[下限値の桁数]での増減によって条件が
変わるので、ROUND関数での桁数の指定と条件付き書式での桁数の
指定がずれると丸める値の桁数が違うので1.00の表示になるのです。

> 数式の100を1000にしてみましたが
これについても、報告値をもとに下限値桁数に応じた10のべき乗を
使っていますが、下限値が3桁の場合に1000を使うと0.995をもとに
条件付き書式で判断するので、1以下として処理されます。

添付画像の[下限値の桁数に応じた報告値]のように、条件付き書式
設定なしでの数値を見てもらえば理解できると思います。
(C列の計算式と条件付き書式は、No.4の回答にあるもの)

[下限値の桁数に応じた報告値]列での数式
 =IF(B7<A7,"<"&A7,ROUND(B7*10^G7,IF(INT(B7)=0,0,LEN(INT(B7))*-1))/10^G7)

[下限値の桁数]列での数式
 =LEN(A7)-FIND(".",A7)

報告値の表示桁数をどのように処理するかを、もっと検証しないと
丸めの値が変わってくるので、質問者自身が判断してください。

No.4の回答者です。
No.5の回答者さんが指摘しているように、報告値で表示をする桁の
問題だと思います。

No.4の回答では、報告値に合わせるために強引な条件付き書式での
表示をしているので、計算値の0.995283を小数点一桁の1.0と表示
するようにしていますが、[下限値の桁数]での増減によって条件が
変わるので、ROUND関数での桁数の指定と条件付き書式での桁数の
指定がずれると丸める値の桁数が違うので1.00の表示になるのです。

> 数式の100を1000にしてみましたが
これについても、報告値をもとに下限値...続きを読む

Q【関数】複数条件に応じてポイントをつけたい

お世話になっております。

条件によってポイント付与する数式を組みたいのですが
条件が複雑で、どのような関数を組めば良いか、関数の知識も乏しく頭を悩ませております。
詳しい方教えて頂けないでしょうか?

K列 担当者ID
L列 計画
M列 実績
N列 達成率
O列 達成額/未達額
P列 ポイント付与欄

上記のようなデータがあります。

下記条件で、O列「達成額/未達額」の降順にポイントを付与したいです。
その際、下記の条件でポイントを付与したいのです。

ポイント集計先
①黄色セル K5~K18:担当者ID
➁赤色セル K4:部門コード
※画像添付いたします。

ポイント付与条件別表
黄色セル E列:担当者ID ※上記①と紐づく
ピンクセル F列:担当者に紐づく主担当部門コード ※上記➁と紐づく
※補足へ画像添付いたします。

★条件★
・基本
O列
①「達成額/未達成額」が0以上なら降順に10Pからポイント付与
➁「達成額/未達成額」が0orマイナスならポイント付与せず
※ただし、マイナスでも実績があればポイント付与

上記、基本条件に加えて、下記条件も組み込みたいです。
①担当者ID+主担当部門コードが紐づけはO列に10PからポイントMAX付与
➁担当者ID+主担当部門コード以外だったら該当ポイントの1/2付与
かつ、「達成額/未達成額」が0orマイナスなら1/2のポイントの半分付与

何卒、よろしくお願いいたします。

お世話になっております。

条件によってポイント付与する数式を組みたいのですが
条件が複雑で、どのような関数を組めば良いか、関数の知識も乏しく頭を悩ませております。
詳しい方教えて頂けないでしょうか?

K列 担当者ID
L列 計画
M列 実績
N列 達成率
O列 達成額/未達額
P列 ポイント付与欄

上記のようなデータがあります。

下記条件で、O列「達成額/未達額」の降順にポイントを付与したいです。
その際、下記の条件でポイントを付与したいのです。

ポイント集計先
①黄色セル...続きを読む

Aベストアンサー

まず基本条件の方からいきます。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*RANK.AVG関数で”達成額/未達成額”の順にランキング(1~)をつけ、11から差し引く、という方法をとります
*”実績”がマイナスのものはランキング付けそのものから除外するので、IF関数で検索対象の配列を絞り込みます
(IF関数に配列を入れたら答えも配列で返してくれるので、その絞り込んだ配列に対してRANK.AVR関数を使います。)
*マイナスのポイントは排除したいので、MAX関数でゼロと比較して正の値のみを採択します

追加条件込みの方は、以下です。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0)*IF(VLOOKUP($K5,$E$3:$F$1000,2,FALSE)=$K$4,1,IF($O5>0,0.5,0.25)),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*担当IDから担当部門コードの検索にはVLOOK関数を使います。VLOOK関数が正常に動作するには、担当IDに漏れがない事と番号順に並んでいる事が必要ですので、これ前提で考えて下さい。
*追加条件に準じ、ポイントを1倍したり、0.5倍したり、0.25倍したり、しました。

まず基本条件の方からいきます。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*RANK.AVG関数で”達成額/未達成額”の順にランキング(1~)をつけ、11から差し引く、という方法をとります
*”実績”がマイナスのものはランキング付けそのものから除外するので、IF関数で検索対象の配列を絞り込みます
(IF関数に配列を入れたら答えも配列で返してくれるので、その絞り込んだ配列に対してRAN...続きを読む

Qエクセルの関数について

エクセルの関数について、ご教示をお願い致します。
日々、sheet2のデータが送られて来るのですが、そのデータ(数値)をsheet1の表に自動へ変換するには、sheet1のC2:M25にはどのような関数を入力すれば宜しいのでしょうか?
悩んでも答えが出て来ません。どなたかご教示をお願い致します。

Aベストアンサー

添付図参照

Sheet1 において、

AI列を作業列として使用
式 =OFFSET($A$2,4*INT((ROW(A1)-1)/4),)
を入力したセル AI2 を下方にズズーッとオートフィル

G/標準;G/標準;
に書式設定し、かつ、次式を入力したセル C2 を右方および下方にズズーッとオート委フィル
=SUMPRODUCT((Sheet2!$A$3:$A$200=$AI2)*(Sheet2!$B$3:$B$200=C$1)*(Sheet2!$C$2:$F$2=$B2)*(Sheet2!$C$3:$F$200))

Q関数を教えてください

A1のセルには、右コーナー、左コーナー、直線、上り坂と入力されるのですが、
B1にAのセルが右コーナーなら右、左コーナーなら左、右でも左でもなければ○○と
表示させるにはどうすればいいでしょうか、いろいろ試しても、成功しません。

Aベストアンサー

今後、条件が増えるようであれば、別のセル範囲に対応表を作って、VLOOKUPが王道でしょう。増加や変更が無いのであれば、同じ発想で、こんな感じです。

=IFERROR(VLOOKUP(A1,{"右コーナー","右";"左コーナー","左"},2,FALSE),A1)

Q大きいポイント順にデータを抽出したい

いつもお世話になっております。

元データのポイントの高い順に抽出先のC列、D列へデータを抽出したいです。
VLOOKUPとLARGE関数を使用したのですがうまくいきません。

何卒、ご教授願います。

★元データ

A列:支店コード
B列:支店名 
C列:ポイント

A列 B列   C列
1  ①支店  5
6  ②支店  6
5  ④支店  10

★抽出先

A列:作業列(元データの支店コード)
B列:順位(1位~30位まで)
C列:支店
D列:ポイント

A列 B列 C列  D列
1  1  ④支店 10
2  2  ②支店 6
3  3  ①支店 5

Aベストアンサー

No.5です。

重複データがあり、その合計で降順に表示したい!というコトですね。

一つの数式で出来るかどうか判りませんが、
↓の画像のように作業用の列を2列設けるのが一番簡単だと思います。

作業列1のE2セルに
=IF(COUNTIF(B$2:B2,B2)=1,SUMIF(B:B,B2,C:C),"")

作業列2のF2セルに
=IF(E2="","",COUNTIF(E:E,">"&E2)+COUNTIF(E$2:E2,E2))

という数式を入れ下へずぃ~~~!っとフィル&コピーしておきます。

Sheet2のB2セルに
=IFERROR(INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!$F:$F,0)),"")

C2セルに
=IF(B2="","",SUMIF(Sheet1!B:B,B2,Sheet1!C:C))

という数式を入れフィルハンドルで下へコピー!

これで画像のような感じになります。

※ Sheet2のC2セルは色々やり方があると思います。
例えば
=IFERROR(INDEX(Sheet1!E:E,MATCH(B2,Sheet1!B:B,0)),"")

でも大丈夫だと思います。m(_ _)m

No.5です。

重複データがあり、その合計で降順に表示したい!というコトですね。

一つの数式で出来るかどうか判りませんが、
↓の画像のように作業用の列を2列設けるのが一番簡単だと思います。

作業列1のE2セルに
=IF(COUNTIF(B$2:B2,B2)=1,SUMIF(B:B,B2,C:C),"")

作業列2のF2セルに
=IF(E2="","",COUNTIF(E:E,">"&E2)+COUNTIF(E$2:E2,E2))

という数式を入れ下へずぃ~~~!っとフィル&コピーしておきます。

Sheet2のB2セルに
=IFERROR(INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!$F:$F,0)),"")

C2セルに
=I...続きを読む

Qエクセルの横検索(関数)について

エクセルの関数で、縦検索語に、横に伸びたデータの最終セルが知りたいのです。

シート1のA行にある文字列や数字を参照し、
シート1のB列にシート2を参照して最終の数字が
入ってる日付をしりたいのですが、
どなたか教えていただけませんでしょうか(>_<)

関数を入力するセルはシート1のB列になります。

シート1
  A  B  C  D  E
1 あ 1/4
2 い 1/3
3 う 1/3
   ↑ここを出したい

シート2
  A  B  C  D  E
1   1/1 1/2 1/3 1/4
2 あ  1  2  3  4   
3 い  5     6  
4 う     9  10 


VLOOKやMATCH、INDEX、HLOOKUP等で色々考えていたのですが
まったく思いつきません(>_<)
VBAの使用はできませんので、出来れば関数で組みたく思っております(>_<)

何卒、お力をお貸しください(>_<)

Aベストアンサー

こうですかね?


ご心配なく、
割と 造作も、
ない事ですから、
お悩みに ならずとも、
構いませんよ、

判れば 簡単です。


式、
=OFFSET(Sheet2!$A$1,0,MAX(INDEX(COLUMN(OFFSET(Sheet2!$A$1,1,1,1,500))*ISNUMBER(OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!$A$2:$A$20,0),1,1,500)),,))-1,1,1)


ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3EPM2ZlNxp7ZQALn


尚、
ファイルは 一度、
ローカルに 別名保存し、
其の 保存ファイルを、
扱うように してくださいね、

此の時、
別名保存でないと、
意味が 無いですよ。


さすれば、
閲覧も、編集も、
叶うものと 思います。


さて、
此を使うなら、
ブラックボックスとして 扱わず、
「こんなものだ」とは 見ず、

ちゃんと 理解して、
くださいね。


私達は 作り方を、
お教えしている、
つもりで あって、

下請けの つもりでは、
ないのです、

ご理解くださいね。


ではでは、

基本から。


エクセル論理演算の場合、
戻り値(返される値)は、
TRUE、FALSE、
此の 2値で、

各々、
TRUEは 0以外と、
FALSEは 0と、

演算時に 型不一致が、
あれば、

内部的に 読み替えが、
されます。


基本的に、
此の 性質を、
利用します。


さてさてさて、
Excelでは、
数値か、否かは、
ISNUMBER構文でも 良いでしょう、

他でも 良いのですがね、
便利ですから。


例えば、
シート2 2列目を、
数値か 見させると、
B2:E2
まで 数値で、
TRUE、
其れ以降が 空セルで、
FALSE、
と 教えてくれます。


先にも 挙げた通り、
TRUE、FALSE、
は、

各々、
0意外、0と、
見なされるのですよね?

其処で 其れ等の、
戻り値に、
COLUMN構文を 使って、
列番号連番を 生成し、
掛け合わせています。


すると、
TRUEが 返された場所では、
列ナンバーが 残り、
FALSEか 返された場所では、
0が 残されます。


列ナンバーは、
何も 操作しなければ、
必ず 0より、
大きいので、

残された 列ナンバー内で、
最大のものを 選り出せば、

其の列が 数値記載最右列と、
判る訳です。


で、
最大を 求めるのは、
MAX(INDEX(……,,))構文です、

……の場所に、
最大値を 得たい式を、
いれます。


もう此処までで、
シート2の、日付記載行の、
何列目を 読み出したら、
良いか、
が 判った訳です、

意外と 簡単でしょ?


後は、
今までで 位置特定か、
済んだ、
意図した 位置を、

OFFSET構文で 読み出せば、
良いだけです。


如何ですか?
案外 造作も、
ないでしょ?

こうですかね?


ご心配なく、
割と 造作も、
ない事ですから、
お悩みに ならずとも、
構いませんよ、

判れば 簡単です。


式、
=OFFSET(Sheet2!$A$1,0,MAX(INDEX(COLUMN(OFFSET(Sheet2!$A$1,1,1,1,500))*ISNUMBER(OFFSET(Sheet2!$A$1,MATCH(A1,Sheet2!$A$2:$A$20,0),1,1,500)),,))-1,1,1)


ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3EPM2ZlNxp7ZQALn


尚、
ファイルは 一度、
ローカルに 別名保存し、
其の 保存ファイルを、
扱うように してくださいね、

此の時、
別名保存でないと、
意味が ...続きを読む

Qエクセル 配列数式について

エクセルについて詳しい方どうかご教授くださいませ。

Sheet1からSheet2へ条件を指定して配列数式を組んでいます。
(Sheet1のA列をB列の値の有無で Sheet2のA列へ参照)
※B列は値が飛び飛びなので、Sheet2のA列へ詰めて参照

こちらSheet1の行を指定し、Sheet2への参照から除外することは出来ますでしょうか?

Aベストアンサー

こんにちは

>Sheet1からSheet2へ条件を指定して配列数式を組んでいます
現状の抽出条件に、
>Sheet1の行を指定し、Sheet2への参照から除外する
ための条件を付け加えれば良いでしょう。
(両方の条件を満足するものだけ抽出したいので乗算になります(=AND条件))

例えば、nの倍数行目だけを除外したいならば、抽出条件はその逆になるので、
 MOD(ROW(範囲),n)>0
のような式を抽出条件に追加することで、除外できるようになるでしょう。

Qエクセル リストと完全一致するセルに色をつける

シート1のA列とB列に
aaa ccc
bbb ggg
ccc kkk
ddd ooo
と言うリストがあって、A1〜A4はAチーム、B1〜B4まではBチームと名前を付けています
シート2にAチームのリスト4個が続いているものがあればセルを赤、Bチームのリスト4個が続いているものがあればセルを黄色に塗りたいです
AチームとBチームの中には同じ品番がある時もあります
条件付き書式で設定は出来るでしょうか?

Aベストアンサー

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル

 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4

 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5

 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

の4パターンについてそれぞれ調べれば良いだけ。

自分なら
 aaa-bbb-ccc-ddd
のようにシート1から文字列を作り、それが調べるセルで同じパターンになるかを調べます。
シート1はA5セルから、シート2はA11セルからデータが入力されているなら、

 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A11 & A12 & A13 & A14
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A12 & A13 & A14 & A15
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A13 & A14 & A15 & A16
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A14 & A15 & A16 & A17

という条件になる。
この4つのうちの一つでも条件を満たせばセルに赤色を付ければいい。
「Bチーム」についても同様にすればいいので、
この場合、8つの条件式を設定することになります。

面倒でもこの考え方ができていないと、ちょっと条件が変わっただけで対処できずに終わります。
冒頭で「並び順」について書きましたが、並び順がシート1のリストの通りでなくとも色を付けたい場合でも、この考え方は必要ということです。

・・・
ちなみに厄介なのが、どちらのチームにも「ccc」がいるというところかな。
これが無ければ違う方法でシンプルにできるんですけどねえ。

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付け...続きを読む

QExcelのフィルター後のセルにコピー

エクセルでSHEET1にデータがあり 例えば 右横項目として 名前 年齢 出身地 あだ名項目(これはまだ未入力) など 横にならんでいて左端縦には下にいろんな人の名前がずらっと並んであった場合、例えば 県別項目の青森県でフィルターを掛けた場合 そのとき必ず6人いるとものして、SHEET2に用意していた、A列下のセルに縦に あだ名6個用意していたとする、たぬき、くま、きりん、ぞう、ウサギ、カラス それを6個まるごとフィルター後のSHEET1のあだな項目欄に一回でスポット コピーペーストできるものでしょうか。

Aベストアンサー

こんばんは!

一気に!という訳にはいきませんが、VBAでの一例です。
Sheet1の1行目は項目行でデータは2行目以降にあり、
D列が「あだ名」列になっているとします。
そして、Sheet2のA1セル以降に表示したいデータが羅列してあるという前提で・・・

Sub Sample1()
 Dim i As Long, cnt As Long
  With Worksheets("Sheet1")
   If .AutoFilterMode Then
    If .AutoFilter.FilterMode Then
     For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
      If .Rows(i).Hidden = False Then
       cnt = cnt + 1
       .Cells(i, "D") = Worksheets("Sheet2").Cells(cnt, "A")
      End If
     Next i
    Else
     MsgBox "絞り込まれていません"
    End If
   Else
    MsgBox "フィルタが設定されていません"
   End If
  End With
End Sub

とりあえずはお望みの動きになると思います。m(_ _)m

こんばんは!

一気に!という訳にはいきませんが、VBAでの一例です。
Sheet1の1行目は項目行でデータは2行目以降にあり、
D列が「あだ名」列になっているとします。
そして、Sheet2のA1セル以降に表示したいデータが羅列してあるという前提で・・・

Sub Sample1()
 Dim i As Long, cnt As Long
  With Worksheets("Sheet1")
   If .AutoFilterMode Then
    If .AutoFilter.FilterMode Then
     For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
      If .Rows(i).Hidden = False T...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング