• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロについて)

マクロについて

このQ&Aのポイント
  • エクセルで2009年と2010年のデータがあり、特定の条件に応じてセルに数値を表示したい場合、IF関数とマクロ式を使用することができます。
  • 具体的には、B列には2009年と2010年のデータがあり、C列には特定の条件に該当する数値が表示されます。重複しない数値の一覧はD列に表示され、D列には数値が2009年と2010年のどちらの集合に属するかも表示されます。
  • また、マクロ式は数値が増えても自動的に対応するようになっています。初心者でも簡単に使うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Sub try() Dim myDic As Object Dim r As Range Dim rr As Range Set myDic = CreateObject("Scripting.Dictionary") For Each r In Range("A1:B1") For Each rr In Range(r.Offset(1), Cells(Rows.Count, r.Column).End(xlUp)) If Not myDic.Exists(rr.Value) Then myDic(rr.Value) = Array(rr.Value, r.Value & "のみ") Else myDic(rr.Value) = Array(myDic(rr.Value)(0), Replace(myDic(rr.Value)(1), "のみ", "且つ") & r.Value) End If Next Next Range("C2").Resize(myDic.Count, 2).Value = _ Application.Transpose(Application.Transpose(myDic.Items)) Set myDic = Nothing End Sub 一例になれば。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>マクロ式でかきたいのですが マクロのプログラムの中身は、ふつうエクセルでは「VBA」といって、式ではなく「コード」という。 ーー それと関連して (例)D2セルには,のところに質問者が挙げているのは関数式です。 ーー 質問の要求はどちら(VBAか関数か)明確にするため補足くされたい。 ーー また >C列に、B2、B3、B3、C2、C3のすべての番号を重複なしでならべ、D列に、下記の式を入れ、その番号が2009と2010のどのような集合に属しているのかを 文章では判りにくいので、質問の例では結果は(シートのセルのデータ並びとしては)どうなってほしいのか補足されたい。

matuto1110
質問者

補足

大変申し訳ございませんでした。 最終目標は、2009年と2010年に、並んでいる番号が『2009年のみ』『2010年のみ』『2009年かつ2010年』のどれに当たるのかを知りたいのです。分かりにくい説明になり大変申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【エクセル】抽出データを上に詰めて表示させたい。

    重複するデータを上に詰めて表示さセル方法が解らないです。 B列はA列の元データから重複分は表示しないようにしています。 C列はA列の元データから重複分の数を数えています。 │A │B    │C│ D │ 1│あああ │あああ │3│ 2│いいい │いいい │2│ 3│あああ │     │ │ 4│ええ  │ ええ  │2│ 5│おおお │おおお │1│ 6│ええ  │   │ │ 7│いいい │  │ │ 8│あああ │  │ │ 9│うううう│うううう│1│ ・ ・ 上記のような表で、A列が元データで、 B列にはセルB1から、=IF(COUNTIF($A$1:A1,A1)>1,"",A1)という関数を オートフィルで下まで伸ばしています。 C列は、=IF(COUNTIF($A$1:A1,A1)>1,"",COUNTIF($A$1:$A$100,A1))と いう関数を使用しています。 そこで、B列C列の何も表示されていないセルを詰めて、上に詰めて 表示させたいです。マクロは良くわからないのでなるべく関数で お願いします。ちなみに、今使用している関数も、こうしたほうが いいというのがありましたら。訂正してもらえると助かります。 解りづらいところがありましたら、補足します。 宜しくお願いします。

  • 複数列の中の文字列の検索、個数抽出

    どなたかお力をお貸しください。。 エクセル2003を使用しています。    A列 B  C  D 1  あ  う     あ 2  い  お  か  か 3  う        う 4  え     き  く 5  お  い  う  け Dの文字列のなかでA~C列の中に重複している文字が何個あるかを出したいです。 この場合D列は「あ、か、う、く、け」なので、A~C列にある「あ、か、う」が重複しているので、3個と出したいです。 もしくは重複していない「く、け」で2個と出したいです。 MATCH関数を使うと出来そうなのですが、MATCH関数だと配列の概念がなさそうなので、どうしたものかと。 条件として、 ・一つのセルで関数を使用して出す。 ・マクロ、計算用のセルはできたら使用しない。 ・空白セルもあり、文字列の完全一致のみ個数としてカウント。 ・列の数はだんだん増えてくるので、列数は増えても大丈夫なやり方の方がいいです。 COUNTIFで重複個数を出すと、「う」が複数回出てくるので、重複の個数が増えてしまい困っています。 もしかしたら不可能かもしれませんが、どなたかお知恵をお貸しください。 よろしくお願いいたします。

  • Excel関数をマクロで入力するには?

    例えば次のような表があります。   A   B    C   D 1 金子 横浜 150  150 2 前田     200 3 石田 千葉 100  100 セルD1には =IF(B1="","",C1) セルD2には =IF(B2="","",C2) セルD3には =IF(B3="","",C3) このD列にマクロにてD1から順番に上の式を書込たいのですが、 ここでは、初めからできている式をコピーするのではなく、あく まで上の式を書き込みたいのです。そこで次のようなマクロで やってみましたがうまくいきません。どうマクロを記述したら 良いのでしょうか。 range("D" & 行数 ).Fomula= " =IF(B" & 行数 & "="","",C" & 行数 & ")" こうすると結果はD1にFALSEと表示され入力された式をみてみると =IF(B1=",",B1)となってしまいます。""が"になってしまい、 きちんと=IF(B1="","",C1)となるにはどうすれば良いのか教えて ください。

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • COUNTIF

    A列に「a」「b」の文字と、空白のセルがあります。「a」の数を数えたいのでcountif関数で求めました。  =COUNTIF(A2:A26,"A") B列、C列と同じように「a」「b」の文字と、空白のセルがありますが、D列はすべて空白です。 空白のときは「0」ではなく、何も表示されない状態にしたいのですが、IFをうまく組み合わせた式を教えてください。 よろしくお願いします。

  • Excelのマクロでセル単位でロックをかける方法に関する質問です。

    Excelのマクロでセル単位でロックをかける方法に関する質問です。 例えばa1からd10の範囲のセルに対して a列の各セルは、IF関数で数値か""を返しているとします。 a列のセルが数値であれば、同じ行の各セルをロックし、""であれば、後からそのセルに手入力できるようにロックを外したいと思います。(もちろんIF関数は書き換えられますが、それでOKです) 例えば、a1が数値なら、a1,b1,c1,d1の各セルはロックに、     a1が""なら、a1,b1,c1,d1の各セルはアンロックに したいわけです。 手作業だと行数が多い場合大変なので、マクロで自動的に行いたいと思いますが、マクロ初心者のため、どうすればよいのかわかりません。 どなたかご教授願えればありがたいです。 よろしくお願いします。

  • Excel、マクロの質問

    Excel、マクロ初心者です。 Excel関数のIF関数ではこのように表示させていますが、マクロではうまく表現できません。 =IF(D89>C90,"b",IF(D89<C90,"a","f")) 比較対象の数がD89から始まり、D5654まであります。 IF関数の式は何となくわかるのですが D89からD5654まで上記の式を適用させるところがうまくいきません どのようにすればよいのでしょうか。

  • エクセル 重複データの検索(COUNTIF関数!?)

    A列とB列で、重複しているデータ(数字)を検索するための関数を教えて下さい。 確か、こんなような↓関数だったと思うのですが、ちょっと違うようです。 C2=IF(COUNTIF(A2,B1:B2377),"","×")

  • 期間内での重複の確認

    いつもお世話なります。 WINDOWS7 EXCELL2010です。 下図を参考に A列 ユーザ定義 mm/dd B列 ユーザ定義 mm/dd 各列の数式は E2 =A2&C2&D2 F2 =B2&C2&D2 G2 =IF(D2="","",IF(COUNTIF($E$2:E2,E2)>1,"重複","")) H2 =IF(D2="","",IF(COUNTIF($F$2:F2,F2)>1,"重複","")) I2 =IF(D2="","",IF(COUNTIF($E$2:F2,E2)>1,"重複","")) 条件付書式 範囲はA2:B10 =$I2=”重複” 紫 =$G2=”重複” 薄青 =$H2=”重複” 薄ピンク という具合に「入所(A列)、退所(B列)」日での重複はセルの色で確認できますが 6の行は「入所、出所」日は対象にはなりません。 重複のチェックから漏れます。 この期間内の重複を防止したいのですが何かいい方法をご教示いただけませんでしょうか。 よろしくお願いします。

  • エクセルの条件範囲と合致したもの

    エクセルの条件範囲と合致したもの こんにちは。http://okwave.jp/qa/q5924759.htmlで質問していたのですが、 うまくいかないので、教えてください。 たとえば、同じシートで、 A1/B1/C1/D1・・・・・・←セル列 (スラッシュはセルだとします) A /1 /A /1 B /2 /B /2 D /3 /C E /4 /D /3 G /5 /E /4 I /6 /F / このように、列同士(A1の列とC1の列)が同じものがあった場合、A1の隣のセルであるB1のセルの数字をA4のセルに記載したい場合の数式を教えていただきたいです。D1に新たに追加されたものに関しては空白をしたいのです。 =IF(COUNTIF($A$1:$A$6,$C$1:$C$6)=0," ",IF(COUNTIF($A$1:$A$6,$C$1:$C$6)=1,B1)) この式を考えましたが、D1の列のDの部分の数字が"4"と記載されてしまい、本来なら"3"を 記載したいのですが、ずれてしまいます。 たぶん、条件の範囲のものとIFを合体させた数式になるのかなって思うのですが、 もし数式を教えていただければ幸いです。 何度も質問してすみません。。。よろしくお願いいたします。