アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記内容について教えて頂きたく書き込みました。
ご回答頂けると幸いです。

日付→ 1日2日3日……
店舗名1〇山本〇
店舗名2佐藤〇〇
.
.
.
.

上記のようなシートで、店舗名が縦に100程ある状態です。
各店舗名横もしくは最終列に、〇が入力されている日付を表示させたいのです。
店舗名1であれば1日・2日…
店舗名2であれば2日・3日…
というように、その店舗の〇が入っている日付だけを判別する方法はないでしょうか?

使用しているのは2010、VBAは初心者ですが多少は扱えます。

現状は目視で数えているんですが、部下の仕事時間をどうにか減らしてあげたく質問させて頂きました。
どうかよろしくお願いします。

A 回答 (3件)

No.2です。



配列数式を言葉で説明しても判りにくいとおもいますので、
↓の画像で説明します。

B5セルに
=B2="○"
という数式を入れ、列・行方向のフィル&コピーすると
「○」のセルは「TRUE」、その他のセルは「FALSE」になります。

次にB8セルに
=B5*COLUMN()
という数式を入れ、列・行方向にフィル&コピー
これで「○」のセルだけに列番号が表示され、その他のセルは「0」となります。

前回の数式
=IFERROR(INDEX(Sheet1!$1:$1,,SMALL(IF(Sheet1!2:2="○",COLUMN(2:2)),COLUMN(A1))),"")
を説明すると

① IFERROR は単にエラー処理で、「○」の数以上列方向にフィル&コピーするとエラー表示になるのでエラーを表示させないため

② INDEX関数で1行目を範囲指定し、その何列目を返すか?という数式です。

③ IF(Sheet1!2:2="○",COLUMN(2:2)) の部分が画像で説明した部分になり
  「○」のセルの列番号が取得できます。

④ それをSMALL関数で小さい順に表示させるために
 >SMALL(・・・,COLUMN(A1)) ( ←「・・・」の部分が③の数式になります。)
としてTRUEの小さい順に表示しています。
>COLUMN(A1) は数式が入っているセルが 「1」となり、列方向にフィル&コピーするたびに
COLUMN(B1)・COLUMN(C1)・・・と変化しますので
1・2・3・・・となり、これはSMALL関数の何番目か?になります。
※ 別に1行目でなくても COLUMN(A100) でも同じ結果になりますが
面倒なので「1」にしているだけです。

以上のコトを一気に行ったのが前回の配列数式です。

この程度でどうでしょうかね?m(_ _)m
「【Excel】特定のデータが入っているセ」の回答画像3
    • good
    • 0
この回答へのお礼

度々のご回答、ありがとうございます。
解説して頂き、すっきりと納得することができました!
SMALLとcolumnを組み合わせてこのような使い方ができるとは目から鱗でした!
本当にご親切にありがとうございます!

お礼日時:2015/04/24 09:00

こんばんは!


一例です。

↓の画像で説明します。
元データがSheet1にあり、Sheet2に表示させるとします。

Sheet2のB2セルに
=IFERROR(INDEX(Sheet1!$1:$1,,SMALL(IF(Sheet1!2:2="○",COLUMN(2:2)),COLUMN(A1))),"")
配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → B2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り、配列数式になります。

B2セルのフィルハンドルで、列・行方向にコピーすると
画像のような感じになります。m(_ _)m
「【Excel】特定のデータが入っているセ」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
まさにイメージしていた通りの結果になり、とても助かりました。
私の説明で意図をご理解頂けた事にも、素晴らしい技術をお伝え頂いた事にも感謝しております。

情けない事ですが、私にはご教示頂いた数式の内容を読み解く事すらできないレベルでした。
厚かましいかとは存じますが、もしお時間があればで構いませんので、なぜこのような結果になるのか、その求め方もご教示頂けると嬉しいです。

今後同じような問題を自分で解決できるように、勉強を重ねていきたいと思います。

お礼日時:2015/04/23 23:37

入力規則が「日付け数字は二桁+”日”で文字列の末尾」となっていいれば、


right関数で右端3文字を抜き出せば済みます。
更に”日”を削除してvalue評価すれば「大きさ」として認識もできます。

mid関数で、”日”を探してその前の数字を抜き出す方法もありますが、
店舗名に含まれる”日”は区別できず、数字が文字情報であればそれを認識できずに桁数も判断不可。

データー入力はそれを利用編集しやすい様に入力規則を定める事が重要です。

ご質問内容を完全理解できずの想定回答なので、外していたら無視してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お答え頂いた内容は質問の意図とは違ったものの、ご教示頂いた「利用編集しやすいように入力規則を定める」というのはエクセルを扱ううえでとても重要な事だと実感致しました。
早期のご回答ありがとうございました。

お礼日時:2015/04/23 23:41

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