No.6ベストアンサー
- 回答日時:
No.4です。
わかりにくくてすみませんでした。結論から先に言えば、以下の式で大丈夫かと思います(改行は消去してください)。若干の変更があります。
=INDEX({0,0,0,2,0,0,2,3,0,0,0,2,2,2,3,4,0,0,0,2,0,0,2,3,2,2,2,4,3,3,4,
5,0,0,0,2,0,0,2,3,0,0,0,2,2,2,3,4,2,2,2,4,2,2,4,5,3,3,3,5,4,4,5,6},
SUMPRODUCT((AT5:AY5>=1)*{32,16,8,4,2,1})+1)
>よく分からない数字
たとえば、1以上を1,それ以外を0と考えると、
A店 1 0 0 0 1 1
B店 0 1 1 1 1 1
C店 1 1 0 1 1 0
となりますよね。これを2進数の数字と考えると、10進数に直して
A店 35
B店 31
C店 54
と見ることが出来ます。この数字がよく分からない数字です。
連続回数は上記の1と0のパターンから決まりますので、2進数の0から63に対して、連続回数がどうなるかを数えておけば、でてきたよく分からない数字を連続回数に変換することが出来ます。
上式では、(よく分からない数字と連続回数の)対応表を数式内に入れてあります。
No.9
- 回答日時:
こんにちは。
私もこの種類の処理はマクロのほうが適していると思いますが、質問者様が「マクロは苦手」とのことなので、関数で考えて見ました。説明が簡単になるよう、1店で説明します。
4月 5月 6月 7月 8月 9月 連続回数
A店 1 0 0 0 1 2 2
式1 - 「=IF(B2>=1,IF(C2>=1,1,0),0)」 :6月以降は5月の式をコピー
式2 「=IF(B2>=1,IF(C2>=1,1,0),0)」 :5月~8月まで4月の式をコピー
式3 「=MAX(B3:B4)」 :全ての月に4月の式をコピー
【解説】
式1の行は2つ並んだセルの後ろを中心に考えて「1以上か」で「前のセルも1以上か」判定して両方の条件を満たした場合、「1」を設定しています。
式2の行は2つ並んだセルの前を中心に考えて「1以上か」で「後ろのセルも1以上か」判定して両方の条件を満たした場合、「1」を設定しています。
式3の行は式1と式2のどちらかが「1」の場合「1」を設定しています。
最後に式3の右端に式3の行の「1」を合計する式を入れて完成です。
分かりやすいようにデータの下に計算式の行を追加しましたが、使いやすくするためには別のシートに式を入れてデータのシートのセルを参照するようにするとよいと思います。
では。
No.8
- 回答日時:
2進数は分かりますか?
たとえば010010は「20」です。左から順に32,16,8,4,2,1をかけて足せばよいです。
まず2進数の0(000000)から63(111111)までを書き出します。
次にそれを見ながら正しい連続回数を数えます。
0から63までの連続回数をカンマでつなげて書いたものを式の中に代入します。
さきほどはこちらで数えたのですが、今は時間がないのでやってみていただけますか?出来ないようでしたらあとでまた来ます。
この回答への補足
2進数はわかります。
でも1連続も1とするようにすると、111001は4ということになってしましますね。ほんとは3になるようにしたい。
000001 と 000000 は 0になってしまうのは仕方がないのかもしれないです。
No.7
- 回答日時:
貼り付ける場所ですが、Alt-F11でVBAの画面が開きますよね?
そして左側に"プロジェクト"ウィンドウがあると思います。
そこに[Microsoft Excel Objects]というのがあり、その下に
開いているBookのシートの一覧がエクスプローラ風に表示されていますよね。
その中からご質問のワークシートを見つけて、ダブルクリックすれば
右側に[Option Explicit]とだけ書かれた真っ白な画面が表示されますよね。
そこに私のマクロ Const~End Subまでを貼り付けてください。
それ以降は#5に書いてあるとおりです。
ちなみに、C店だと何故7かですが、A店がAT5だから5行目なんですよね?
ならばB店は6行目、C店が7行目なだけです。
No.5
- 回答日時:
#1、3です。
>因みに、A店の4月の1セルはAT5です。
>AT5~AY5に1以上の数値が連続する回数・・・・。
データがAT5~AY5ならば、初めの4行の数字を
こう書き換えてください(AT=46,AY=51です)
Const clnStartRow As Long = 5 'データの開始行
Const clnEndRow As Long = ?(注1) 'データの終了行
Const clnStartCol As Long = 46 'データの開始列
Const clnEndCol As Long = 51 'データの終了列
(注1)何店舗あるのか分からないので自分で入れてください。例えば、C店までなら7です。
そしてマクロをF11でVBAを開いて貼り付けて、
Private Sub Mac1() ~ End Sub までの間の
どこかにカーソルを持っていって、F5を押すか、
再生ボタンみたいなアイコンをクリックしてください。
そしたらAZに連続数が自動で入ります。
以上、さらに分からないことがあれば聞いてください。
この回答への補足
やっぱりマクロはよくわからないです。
どこにどう貼り付けたりとかがわかってないのでわたしには無理のようです。
なぜC店までなら7なのかとかまったくわからないので。
ありがとうございました。
No.4
- 回答日時:
月数が変わらなければ・・・
以下の式で1以上の月のパターンを表す0から63までの数字が出ます(パターンを2進数と考えて10進数に変換)。
=SUMPRODUCT((AT5:AY5>=1)*{1,2,4,8,16,32})
さらにこの数字を対応表にしたがって連続回数に変換します。
対応表をA1:A64とすれば、
=INDEX(A1:A64,SUMPRODUCT((AT5:AY5>=1)*{1,2,4,8,16,32})+1)
範囲指定ではなく数式に対応表の配列を記入することも出来ます(ヘルプを参照)。
参考までに、変換表を載せておきます(間違っていたらごめんなさい)。
0: 0,
1: 0,
2~3: 0,2,
4~7: 0,0,2,3,
8~15: 0,0,0,2,2,2,3,4,
16~31: 0,0,0,2,0,0,2,3,2,2,2,4,3,3,4,5,
32~63: 0,0,0,2,0,0,2,3,0,0,0,2,2,2,3,4,2,2,2,4,2,2,4,5,3,3,3,5,4,4,5,6
この回答への補足
対応表とはなんでしょうか?
単純に連続回数セルに=SUMPRODUCT((AT5:AY5>=1)*{1,2,4,8,16,32})と貼り付けるとよくわからない数字がでてきます。
それと=INDEX(A1:A64,SUMPRODUCT((AT5:AY5>=1)*{1,2,4,8,16,32})+1)はどこに貼り付けるのでしょうか?
No.3
- 回答日時:
一応私もマクロ書いてみました。
データの範囲をConstで指定していますので
行が増えたり月が増えたらこの値を変更してください。
マクロが分からなければ、補足質問してください。
Const clnStartRow As Long = 2 'データの開始行
Const clnEndRow As Long = 4 'データの終了行
Const clnStartCol As Long = 2 'データの開始列
Const clnEndCol As Long = 7 'データの終了列
Private Sub Mac1()
Dim blContinue As Boolean
Dim lnCount As Long
Dim r, c As Long
For r = clnStartRow To clnEndRow
lnCount = 0
blContinue = False
For c = clnStartCol + 1 To clnEndCol
If (Cells(r, c) > 0) Then
If (blContinue = True) Then
lnCount = lnCount + 1
ElseIf (Cells(r, c - 1) > 0) Then
lnCount = lnCount + 2
blContinue = True
End If
End If
Next c
Cells(r, c) = lnCount
Next r
End Sub
この回答への補足
マクロはよくわからないです。
因みに、A店の4月の1セルはAT5です。
AT5~AY5に1以上の数値が連続する回数・・・・。
マクロですか。VBEを開いて↑を貼り付けたりしてみましたがまったくよくわかりませんでした(TT)
No.2
- 回答日時:
マクロ書いた。
即席なので、読みづらいけど。B2に4月、C2に5月…(2行に横に、ってこと。)
A2にA店、A3にB店…(A列に縦に、ってこと。)
という感じで。
マクロがわからないとたしかにつらいかも。
----------
Sub Macro1()
v = 2
Do Until Cells(v, 7) = ""
p = 2
t = 0
k = 0
Do Until p = 8
If Cells(v, p) = 0 And t = 1 Then
t = 0
End If
If Cells(v, p) <> 0 Then
t = t + 1
End If
If (Cells(v, p) = 0 Or p = 7) And t > 1 Then
k = t + k
t = 0
End If
p = p + 1
Loop
Cells(v, 10) = k
v = v + 1
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 「Newton」7月号特集記事 6 2022/06/07 21:27
- 健康保険 随時改定・月変 について教えて下さい。 1 2023/01/15 14:54
- 占い 私の運勢を占ってください。なぜ不幸な人生を歩んでいるのでしょうか? 2 2022/04/25 00:13
- 所得・給料・お小遣い 親の扶養に入っている人は、例えば、6月、7月、8月 連続で8万以上?稼いだらダメなんですよね? 6月 2 2023/05/18 10:19
- 健康保険 コロナで傷病手当? アルバイトで勤続年数4年、社会保険加入済です(週5×8hのフルタイム) また土日 1 2022/07/31 21:31
- 野球 4月から大型連休に入っている 阪神 連休明けはいつでしょうか 9月まで連休続けるのでしょうか 3 2022/04/23 06:29
- 所得・給料・お小遣い 僕は23歳のニートです。 4か月間だけバイトしたいです。 親の扶養に入ってます。 親の扶養から抜けな 1 2023/05/18 10:39
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- その他(悩み相談・人生相談) 社会人の皆さんに質問です 週に4日働くとして、自由に働く人と休む日を決められるとしたらどんな感じにし 3 2022/04/05 13:50
- 所得・給料・お小遣い 扶養範囲 拡大について 5 2022/09/12 23:03
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
値貼り付けをしても書式も貼り...
-
エクセルで特定の数字となる組...
-
Excel にて非表示行を探すワー...
-
【マクロ】セル内のテキストを...
-
Excel2007で、太字にした行のみ...
-
Excel(VBA)データ入力に応じて...
-
Excelで連続印刷をするマクロ
-
エクセル2003でマクロをおこな...
-
wordのvbaでハイパーリンク設定...
-
並べ替えのマクロで対象行の範...
-
excel ある部分だけをコピペし...
-
エクセルの複数シートの保護を...
-
【Excel関数】値が合致するセル...
-
VBAでシートコピー後、シート名...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
エクセルで前シートを参照して...
-
EXCEL:同じセルへどんどん足し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
excel ある部分だけをコピペし...
-
Excel にて非表示行を探すワー...
-
Excel(VBA)データ入力に応じて...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
「マクロ」の足し算の式を教え...
-
値貼り付けをしても書式も貼り...
-
Excelでセル内の数式は残し値だ...
-
wordのvbaでハイパーリンク設定...
-
Excel2007 セルを右方向に削除...
-
エクセル マクロ オートシェ...
-
〈VBA〉 CSVデータの指定列を読...
-
エクセル2003でマクロをおこな...
-
エクセルで特定の数字となる組...
-
Excelで連続した1以上の数値の...
-
並べ替えのマクロで対象行の範...
-
エクセルを使って英文から単語...
-
行の入れ替えってどうするの?
おすすめ情報