• 締切済み

エクセルで連続入力セルの頻度分布

いろいろやっているのですが、うまくいかないので、ぜひご教授願います。   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16    2 3 4 5 A ○ ○      ○ ○ ○    ○ ○ ○    ○ ○ ○ ○    1 2 1 0 B    ○    ○      ○ ○ ○ ○         ○ ○       1 0 1 0  C           ○ ○ ○ ○ ○                     0 0 0 1 のように、セルの横方向に連続して入力された個数を知りたいのですが、簡単でよい方法を教えてください。 実際は○では無く、複数の文字が入りますが、文字の区別をする予定はありません。  よろしくお願いします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.3・5です! 何度もごめんなさい。 No.5のコードで一部間違いがありました。 前回のコードは削除して↓に変更してください。 Sub test2() 'この行から Dim i As Long, j As Long, k As Long, M As Long i = Cells(Rows.Count, 1).End(xlUp).Row j = ActiveSheet.UsedRange.Columns.Count Range(Cells(2, 19), Cells(i, j)).ClearContents For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To 17 If Cells(i, j) <> "" Then k = j Do While Cells(i, k) <> "" k = k + 1 M = M + 1 Loop If M > 1 Then Cells(i, M + 17) = Cells(i, M + 17) + 1 j = k End If End If M = 0 '←ココに移動させました。 Next j Next i End Sub 'この行まで 失礼しました。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3です。 >出来ればsheet1で結果を見たかったので・・・ とありますので、データはA列が項目列で16列(Q列)までしかない!というコトですかね? そうであればもっと簡単になります。 とりあえず、S列以降に表示するようにしてみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 前回同様、Alt+F8キー → マクロ → マクロ実行です。 Sub test2() 'この行から Dim i As Long, j As Long, k As Long, M As Long i = Cells(Rows.Count, 1).End(xlUp).Row j = ActiveSheet.UsedRange.Columns.Count Range(Cells(2, 19), Cells(i, j)).ClearContents For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To 17 If Cells(i, j) <> "" Then k = j Do While Cells(i, k) <> "" k = k + 1 M = M + 1 Loop End If If M > 1 Then Cells(i, M + 17) = Cells(i, M + 17) + 1 j = k M = 0 End If Next j Next i End Sub 'この行まで こんなんではどうでしょうか?m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.4

添付図参照 補助シート Sheet2 において、 1.セル B2 に式 =IF(Sheet1!B2="","XX",Sheet1!B2) を入力して、此れを右方にズズーッと(列Qまで)ドラッグ&ペースト 2.セル R2 に次式を入力   ="X"&B2&C2&D2&E2&F2&G2&H2&I2&J2&K2&L2&M2&N2&O2&P2&Q2&"X" 3.範囲 B2:R2 を下方にズズーッとドラッグ&ペースト 4.セル S2 に式 ="X"&REPT("○",Sheet1!S$1)&"X" を入力して、此れをズズーッと右方にズズーッと(列Vまで)ドラッグ&ペースト Sheet1 において、 5.セル S2 に次式を入力して、此れを右方および下方にズズーッとドラッグ&ペースト   =((LEN(Sheet2!$R2)-LEN(SUBSTITUTE(Sheet2!$R2,Sheet2!S$2,""))))/(S$1+2)

mot101tom
質問者

お礼

お礼が遅くなり申し訳ありません。 色々と試行錯誤していますので、後ほど試させていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! VBAになってしまいますが・・・ 一例です。 ↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。 尚、Sheet2の項目行・項目列(薄い黄色部分)はあらかじめ入力されているという前提です。 Alt+F11キー → メニュー → 挿入 → 「標準モジュール」 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long, j As Long, k As Long, M As Long Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = Worksheets("Sheet1") '←「Sheet1」は実際のシート名に! Set ws2 = Worksheets("Sheet2") '←「Sheet2」の部分も・・・ i = ws2.UsedRange.Rows.Count j = ws2.UsedRange.Columns.Count Range(ws2.Cells(2, 2), ws2.Cells(i, j)).ClearContents For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column If ws1.Cells(i, j) <> "" Then k = j Do While ws1.Cells(i, k) <> "" k = k + 1 M = M + 1 Loop ws2.Cells(i, M + 1) = ws2.Cells(i, M + 1) + 1 j = k M = 0 End If Next j Next i End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

mot101tom
質問者

お礼

お礼が遅くなり申し訳ありません。 出来ればsheet1で結果を見たかったので 今後の為の勉強で利用させて頂きます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

かなり式が複雑になりそうなので作業シートを作って対応します。 シート1がお示しの表でB1セルから例えばQ1セルまでに01,02・・・のように数値が入力されており、A2セルから下方にはA,B,Cといった項目名が入力されているとします。 ○などの入力はB列からQ列までの2行目以降に入力されているとします。 そこで作業用のシートですが例えばシート2に作成するとしてB2セルには次の式を入力して右横方向のQ2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(AND(Sheet1!B2<>"",Sheet1!C2<>""),SUM(A2)+1,IF(AND(Sheet1!B2<>"",Sheet1!C2=""),1000+SUM(A2)+1,"")) ここでSUM関数を使っているのは例えばシート2のA列に項目名などが入力されたとしてもエラーが出ないようにするためです。 作業シートの操作は終わって、連続入力セルのデータを表示させるために例えばシート1のS1セルに2、L1セルに3、M1セルに4、N1セルに5のように連続入力されているセルの数を入力します。 その上でS2セルには次の式を入力したのちに右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(OR($A2="",S$1=""),"",COUNTIF(Sheet2!$B2:$Q2,1000+S$1)) これで対応する各行での連続入力セルの頻度分布が表示されます。

mot101tom
質問者

お礼

お礼が遅くなり申し訳ございません。 かなり良い感じに仕上がってきました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

COUNTA関数を使ってみてください。

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

関連するQ&A

  • エクセルで連続するデータの個数だけカウントする

    エクセルは2013を使用しています。 シートには各セルに「○」 「×」 「□」 「空白」が入力されています。    A   B  C 1  ○   ○ 2  × ○   3  × ○ □ 4     ○ □ 5  ○ × □ 6  × □ ○ 7  ○ □   8       ○ 計  2 5 3 ※A列の計・・・×が連続している ※B列の計・・・○と□が連続している ※C列の計・・・□が連続している このように連続するデータの個数だけをカウントする方法を教えて下さい。 よろしくお願い致します。

  • 入力されているセルの個数を数えるには?

    エクセル2003で表を作成しました。指定した文字を含むセル以外で、入力されているセルの個数を数えるにはどの関数を使えばいいでしょうか?   A   B   C  D   E   F   G 1   アい 2 3     フて   イろ 4 5     エじ 「ア」を含むセル以外で、文字が入力されているセルの個数は?

  • Excelの連続データ入力について

    Excelで連続データを入力したいのですが、連続するデータが複数重なると(かつ連続しない文字も含んでいます)これらのオートフィルは重なったセルも加算され狙ったものとは違う値になってしまいます。 例えば、 =A1 aaa(ただの文字) =B1 これをオートフィルで連続データを作成すると、 =A1 aaa =B1 =A4 aaa =B4 =A7 aaa =B7 こうなります。 本当は、 =A1 aaa =B1 =A2 aaa =B2 =A3 aaa =B3 こうしたいのです。 良い方法はありませんでしょうか? 宜しくお願い致します。

  • Excelで離れたセルに連続したデータを貼り付けたい

    セルB5「=sheet1!C7」のデータをコピーし、 セルB7「=sheet1!C8」 セルB9「=sheet1!C9」・・・ と、連続したデータを貼り付けていきたいのですが、 セルB7「=sheet1!C9」 セルB9「=sheet1!C10」・・・ と行数も2つ飛びで貼り付けになってしまいます。 毎回ひとつひとつ入力するのが大変な手間なのですが、 なんとかならないでしょうか? もうひとつ質問です。 セルB5「=sheet1!C7」のデータを セルE5「=sheet1!C36」 セルH5「=sheet1!C65」 と行番号を29ずつずらして貼り付けたいのですがこれも簡単に貼り付ける方法はないでしょうか? やっぱり毎回ひとつひとつ入力するのが大変です・・・。

  • Excel 特定の文字列が連続で続いたら非表示

    セル内の特定の文字列が2個以上連続してる場合、連続している文字列を非表示にしたい。 セルに横一列にデータを入力し、=C2&","&D2&","&E2&","& ,,,,, 横の列にはデータを","を入れて文字列を結合したセルを表示させます。 例 データの文字列が1 2 3 4 5と入力されていたら 1,2,3,4,5,,,, と表示され複数セルの入力された文字列が結合した形で表示されます。 これを 1,2,3,4,5 とカンマ","が2個以上連続したらデータの(この場合5)後ろの連続しているカンマを非表示にしたいです。 Excelは2016で、使用できる関数が限られています。 この場合、他の関数の組み合わせで1,2,3,4,5と連続するカンマを非表示にする方法はありますでしょうか。 Excelのシートは添付画像の通りです。 詳しい方いましたら、ご教授下さい。 よろしくお願い致します。

  • エクセルでセルに入力制限をしたいのですが。

    例えばA1のセルには全角で10文字まで、B1のセルには半角カナで10文字までという入力制限ができるでしょうか?入力規則で設定したところ、文字数制限はできるのですが、半角,全角の区別をしてくれません。 よろしくお願いします。

  • エクセルで同じ数字が連続している個数を関数でセルに出力

    A列に1かー1かいずれかの数字が入力されているとき、その行から上方に数えて、B列には1の連続している個数を、C列にはー1の連続している個数を出力したいのです。例えば A列    B列    C列 1      1     0 1      2     0 -1    0     1 -1    0     2 -1    0     3 といった具合です。 この時、B列、C列にはどのような関数を入力すればよいでしょうか。

  • EXCELのセルの個数の算出

    文字や数値を含んだセルの数を求めたいのですが・・・ それだけならわかるのですが、 式を含んだ場合がわかりません。 VBAは使わずに求めたいのですが・・・ 例えば、A1にあ、B1に10、C1に=IF(D1="","",D1) と入力されているとします。 A1~C1の範囲で、D1に何も入力されていない時はセルの個数を2、 D1に何か入力されたらセルの個数は3としたいのです。 要するに、見た目上何かセルに入ってれば、 個数の対象としたいのですが・・・ どなたかおわかりになられるかたがおられましたら、 是非ともよろしくお願い致します。

  • エクセルVBAで連続しない数字を抽出できますか?

    エクセル2002使用です。 VBAでセルに連番が入力された複数のセルに不連続となったセル番地をとりたいのですが・・・・        A B C D E F 1行目  1 2 3 4 8 12 2行目  4 5 7 8 9 5  左端から必ず右方向へ連続した番号が、入力されますが、途中でその連続性が途絶えます。 1行目の場合はE1セル、2行目はF2セルです。このE1セルやF2セルのセル番地を見つけ出せるようにしたいのですが・・・ 数字は1から始まるとは限りません。 IFステートメントで「不連続ならば・・・」とすればいいと思うのですが、「不連続ならば・・・」の部分で困っています。 よろしくお願いします。

  • エクセルで隣のセルへ自動的に入力

    A列のセルに「あ」を入力すると、B列(横のセル)に「亜」。「い」を力すると、B列(横のセル)に「意」。「う」を入力するとB列(横のセル)に「意」のように、A列のセルに入力する文字によってB列のセルが自動的に(決まった10パターンくらいのものを)入力するようにしたいのですが…よろしくお願いします。

専門家に質問してみよう