
はじめまして
VB6.0で作業しています。
今プログラムを作成中なのですが、
データが次のように並んでいて、
74 61 61 61 61 61 61 61 51 58 58 29 16 21
74 61 61 61 61 61 61 61 51 57 56 15 14 18
74 61 61 61 61 61 61 61 51 56 19 14 14 19
74 61 61 61 61 61 61 61 51 34 13 13 13 17
74 61 61 61 61 61 41 14 14 19 19 19 19 24
74 61 61 61 61 61 49 15 15 19 19 19 20 24
74 61 61 61 61 61 51 14 14 19 19 19 20 24
と並んでいて、それぞれ1行ずつ30以下の数字をカウントしてそれぞれ書きだしていきたいのですが
どうしたらいいのでしょうか???
(たとえば、今の場合だと1行目は3
2行目は3
3行目は4となるように)
誰かよろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
データをSplit()で分割してしまえば簡単ですよ。
Sub test()
Dim strData As String 'ここにデータを入れて
Dim strDivided() As String '分割後のデータをここに書き出す。
Dim i As Long
Dim Ct As Long 'カウンタ
strData = "74 61 61 61 61 61 61 61 51 58 58 29 16 21"
strDivided = Split(strData, " ")
Ct = 0
For i = 0 To UBound(strDivided)
If Val(strDivided(i)) <= 30 Then
Ct = Ct + 1
End If
Next i
MsgBox "30以下は" & Ct & "個。"
End Sub
No.3
- 回答日時:
こんにちは
入力と出力の形式がわからないですが、作ってみました。
空白で区切られた行の分割でしたら、VB6ならSplitが使えます。
空白文字で分割して配列に入れます。
行単位の読込み部分?は、自分で頑張ってください。
出力はリストボックスへの表示にしてみました。
では!
'----------------------------------------
'フォームにList1リストボックスと、Command1ボタンを配置してください!
'
Private Sub splitGyo(ByVal zZ1 As String, ByVal nLi As Long)
'■ 1行をばらして、30以下の数値をカウントしてリストボックスに出力する
Dim zZ2() As String
Dim nN1 As Integer
Dim nN2 As Integer
'空白で区切ったデータを配列に入れる
zZ2() = Split(zZ1, " ")
nN2 = 0 'カウンタ
For nN1 = 0 To UBound(zZ2) '配列の終わりまで
If IsNumeric(zZ2(nN1)) Then
'数値なら
If CSng(zZ2(nN1)) <= 30 Then
'30以下ならカウントアップする
nN2 = nN2 + 1
End If
End If
Next
'リストボックスに書き出す
List1.AddItem nLi & " 行目 : " & nN2 & " 個 "
End Sub
'----------------------------
Private Sub Command1_Click()
'■ 行を設定して呼び出す
' ファイルだったら Line Input で1行ずつ読み込むように!
Dim zGyo As String
Dim nLine As Long
'例
nLine = 3 '何行目か(行カウンタにする)
zGyo = "74 61 61 61 61 61 61 61 51 56 19 14 14 19" 'データ
’「行のデータ」と、「何行目か」を渡す
Call splitGyo(zGyo, nLine)
End Sub
'---------------------------------
以上
No.2
- 回答日時:
プログラム作成の意図はともかくとして...。
(意図は、ご本人の都合ですので)
単純に考えれば、読み込んだ数字の表を二次元
の配列の格納して、ループしながら比較し、見
つけた位置を別の配列に書き出す。
という処理を行いたいわけですよね?
こういう処理を「効率良く行うには?」という
事でしょうか。
バイナリソートのロジックを応用して、単純に
ループするよりは高速化できると思いますが...。
No.1
- 回答日時:
こんにちは
質問を見てしまったので、つい書きこんでしまいました。
このプログラムを作成する意図は何なのでしょうか?
どうしてこんな質問をしているのか意図がわかりません。
プログラムの知らない人が仕事に必要なので質問したようにも思えないですし、
プログラムの勉強の為の質問にしては、簡単すぎます。
教科書を見直した方がいいと思います。
このプログラムが自分で書けないとしたら、回答を見ても分からないことはありませんか。
一番、気になるのはこのデータはどうゆう形で受け取るのでしょうか。
例えば、このデータがテキストファイルに有って読み込むとしたらその処理を作るのが一番大変な所になります。
既にデータが読み込まれているとしたら。どうゆう変数にデータが入っていますか?
自分の勝手な想像で失礼な事を言っていたらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
vbsでのwebフォームへの入力制限?
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】値を変更しながら...
-
vba textboxへの入力について教...
-
【マクロ】開いているブックの...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
【ExcelVBA】値を変更しながら...
-
VBA ユーザーフォーム ボタンク...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
VBAでセルの書式を変えずに文字...
-
【VBA】値を変更しながら連続で...
-
Vba セルの4辺について罫線が有...
-
VBAの「To」という語句について
-
以下のプログラムの実行結果は...
-
vbaにてseleniumを使用したedge...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
VBA 入力箇所指定方法
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでセルの書式を変えずに文字...
-
vb.net(vs2022)のtextboxのデザ...
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
おすすめ情報