- 締切済み
エクセル関数について
エクセルでセルA1に1、B1に2・・・・・Iに、J1に10が入力された表があります。また、A2に1、B2に3、C2に5、D2に7が入力されています。A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが、教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
入力欄がA2セル一個と限定ならぎりぎり関数でも出来ますが,4つもあるのでは関数では出来ません。 出来るって言ってもふつーのやり方じゃ出来ないのは確かなので,次のように仕込んで実施するのが良いでしょう。 シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) dim h as range on error resume next for each h in application.intersect(target, range("A2:D2")) if h <> "" then if application.countif(range("A1:J1"), h) > 0 then with cells(3, application.match(h, range("A1:J1"), 0)) .value = .value + 1 end with end if end if next end sub ファイルメニューから終了してエクセルに戻り,1行目を準備してからA2:D2に入力すると3行目に加算される。
- yosifuji20
- ベストアンサー率43% (2675/6115)
ここで言いたい趣旨は、最初にA2:D2に入る数字は、3列目の左から1,3,5,7番目にセルに1を入れる。 次にやはりA2:D2に入る数字によって、3列目の左から2.4.6.8番目にセルに1を入れる。 ということでしょうか。 でもこの条件では最初からA3:J10に1をセットしておいても同じことではないでしょうか。 また、同じA2:D2に異なる数字を入れるのですから、再入力後は元の数字はどうしても上書きで消えますね。 これを防止するには元の数字をどこか別なセルにコピーをしておくしかないですね。関数でこれを実現するのは困難です。マクロで自動的のコピーすることを考えたほうがよさそうですが。 次に「またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたい」の意味ですが、これはA2からD2にたとえば1,4,7,10と入力された場合は、3列目の左から1,4,7,10番目のセルの今の数値に1を加算するという意味でしょうか。 いずれにしてもやりたいことの意図がもう少しわからないのと、A3:J3があるときは1を無条件で1をいれ、あるときは1を加算すというように条件が変わるので、同一の式では無理かなということ(かなり複雑な式ならばできるかもしれませんがかなりややこしい) それ以前にあなたの意図をもう少し整理したほうがよさそうだといううこと、これらを考え直して再度ご質問されてはいかがでしょうか。 多分詳細がわかれば関数とマクロを組み合わせればできることかなというイメージはありますが。
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
入社試験ですか? ところで、まっっったくわからないのですが。 >A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。 検索して入力? >次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 何と同様?「A2からD2を検索」とやら? >このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが ごめんなさい限界です。A2~D2に2,4,6,8を入れたらそのセルにあった1,3,5,7はなくなるに決まってるじゃないですか… 本当はどんな値が入ってて何がしたいのか、可能な範囲だけでも公開してくれないと無理だと思います。