- ベストアンサー
エクセル行数カウント方法とは?
- エクセルの行数カウントについて質問です。A列に数千行の文字が入っており、特定のパターンでデータが続いています。8桁の数字のみをカウントしたいが、現在は手動で行数を数えています。効率的な行数カウントの方法はありますか?
- エクセルの行数カウントについての質問です。A列には数千行のデータが入っており、特定のパターンでデータが続いています。8桁の数字のみをカウントしたいが、現在は手動で行数を数えています。より効率的な行数カウントの方法を教えてください。
- エクセルの行数カウントに関する質問です。A列には特定のパターンでデータが続いており、8桁の数字のみをカウントしたいです。現在は手動で行数を数えていますが、より効率的な方法を知りたいです。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (10)
- layy
- ベストアンサー率23% (292/1222)
参考) VBAってどんな感じかのサンプルです。 Public Sub sample() 'セル内容を1つずつ編集します 'A1を基準に、横1列×縦20列のセルの操作を繰り返す Dim W As String Sheets(1).Select Range("A1").Select For X = 1 To 1 For Y = 1 To 20 W = Cells(Y, X) If W = "z001" Or W = "z002" Then ' 区切りのときの処理 Else If IsNumeric(W) = True Then ' セル8ケタ数字であるときの処理 Debug.Print W ’←VBAのイミディエイトに表示 Else ' セル8ケタ数字でないときの処理 End If End If Next Y Next X MsgBox ("完了") End End Sub これだけの記述で 事例のデータの「12578978」を表示させることができますから、 今回のことをきっかけにVBAを学んでみましょう。
- layy
- ベストアンサー率23% (292/1222)
いきなりカウント数出すよりは、ほかの列に作業用に情報設定する。 Z001からZ002までのグループ毎に連番つける。 8桁数字であるか判断し、同じグループ内での個数を数える。 こんなことすれば、 1つ目グループには0。2グループ目には0、3グループ目に1つ、イメージではありますがなんとかなるのでは、と思います。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No4です。 あとから実はこれにしたかったなど言われておりますので、余計なことかもしれませんが次のようにしてはどうでしょう。 お示しのデータがA2セルから下方に入力されているとします。 B列は作業列としてB2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(A1="",A2=""),"",IF(AND(A1<>"",A2=""),MAX(B$1:B1)+1,IF(OR(ASC(A2)="z001",ASC(A2)="Z001"),MAX(B$1:B1)+1,""))) そこでお求めの表ですがD列にはz001が出てきた回数を上から順に番号を付けて表示し、E列にはz001からz002までがどのセルからどのセルまでかを表示させます。F列にはその間に挟まれたデータの数を表示させます。 D2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(B:B)-1,"",ROW(A1)) E2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(D2="","","A"&MATCH(D2,B:B,0)&"~A"&MATCH(D2+1,B:B,0)-1) F2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(D2="","",MATCH(D2+1,B:B,0)-MATCH(D2,B:B,0)-2) ご質問の答えはF列の数値になりますね。
- lll49erlll
- ベストアンサー率58% (25/43)
- lll49erlll
- ベストアンサー率58% (25/43)
【エクセルの行数カウントについて】 私が質問を理解してるか不安ですが、、、 画像のように B列に =IF(A2="z001",0,IF(A2="z002",B1,B1+1))で、、 A列がz001の時 0として、Z002以外の時は上のセルに1を足して行き、 z002の時 上のセルと同じ値をセットすれば、 z002のB列にz001の次~z002の前までの個数が入ることになります。 ただし z001、z002は 半角、全角、大文字、小文字の判定をしてませんので 間違いなく その文字列でなければなりません、 なお、B列は A列の行の値が"z002" 以外の時は数値が煩わしいので文字は薄いグレーとし、 条件付き書式で A列の行の値が"z002"の時だけ 太字の黒と下罫線を表示させてます。 A列も、同様な条件付き書式を設定しています。
- layy
- ベストアンサー率23% (292/1222)
VBAで行えば、数字か判断しながら行数数えながら結果を出せると思います。 A1がZ001か8桁文字か数字かZ002かみたら結果を出して、次はA2、の繰り返しです。。 関数なら区切り値か数字だけかの判定列をB列やC列に作ってやる。 12578978だけ、を関数でどう特定させるか、ですがそこはできてますか。
お礼
マクロは記録したものをちまちま張っているぐらいです。 いろいろな方に教えて頂き、ぜんぜん使えていない事にびっくりしています。 お答えいただき大変ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
こういう対象とする行の始まりと終わりの変動するものは、関数では扱いが難しい。 VBA向きの問題だ。 ただし社業列を使うと以外に平凡。 例 質問ではxは”Z001"、yは”Z002"に当たる。両カッコで囲むようなイメージ。 B列B1の式は =COUNTIF($A$1:A1,"x") 下方向に式複写 A列 B列 x 1 a 1 s 1 d 1 f 1 y 1 x 2 d 2 f 2 g 2 x 3 f 3 g 3 h 3 y 3 何処かの列へ(D列とする) D列 1 2 3 ・・・ を作っておく。 E1に =COUNTIF($B$1:$B$100,D1)-2 式を下方向に複写 結果 D列 E列 1 4 2 2 3 3 ・・・ と入れて下方向に式を複写
お礼
マクロは自動記録をちまちまとつけるぐらいなので、 関数でこんなにすごい方法を教えてただきびっくりしました。 個別にカウントして、さらに集計までされるなんて!! 本当にありがとうございます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
必ず8文字のデータが対象となっているのであれば次の式でよいでしょう。 データがA1セルからA100セルの間に有るとして =SUMPRODUCT((LEN(A1:A100)=8)*1)
お礼
お答え大変ありがとうございます。 私の説明が雑なのですが、Z001とZ002にはさまれた行を、はさまれているデータくくりで 答えがでるかなとおもいました。(わかり辛いですよね・・すみません。) 教えていただいた内容も非常に参考になり、合計などで確かめたりするのに 役に立ちそうです。 本当にありがとうございます。
- nattocurry
- ベストアンサー率31% (587/1853)
> 8桁の数字のみを関数でカウントしたのですが、 その関数を提示してみてください。 質問の例では、どんな結果が欲しいのでしょうか?
- MackyNo1
- ベストアンサー率53% (1521/2850)
具体的に度の湯王菜集計結果が得たいのかわからないのですが、最初のZ001とZ002の間の行数、2番目のZ001とZ002の間の行数などを順次別セルに表示したいということなら、以下のような数式で表示できます。 =SMALL(IF($A$1:$A$10000="Z002",ROW($A$1:$A$10000),10000),ROW(A1))-SMALL(IF($A$1:$A$10000="Z001",ROW($A$1:$A$10000),10000),ROW(A1))-1 配列数式ですので入力後Ctrl+Shift+Enterで確定して、下方向にオートフィルしてください。
お礼
返信送れて大変申し訳ありません。 こんなにすごい式ができるんですね。 私にはすこし難しいですが、なんとか勉強してみます。 大変ありがとうございました。
お礼
お礼が送れて大変もうしわけありませんでした。 IFはよく使っているのですが、教えて頂いた方法はまったく思いもつきませんでした。 勉強不足を痛感しています。 いままでの作業に比べれば非常に楽になると思います。 C列・D列などを工夫すれば、素敵になる感じがします。 大変ありがとうございました。