Gizport
1 回答
0
Share (facebook)
49
view
全般

光が再び見えてきました。本当に感謝申し上げます。 私よがりの下手な...

光が再び見えてきました。本当に感謝申し上げます。

私よがりの下手な説明で、理解していただきありがとうございます。

早速、試してみました・・が、 最初の配列(4×10)で試してみました。
結果は、ABCDすべて”0”と出ました。喜びと悲しみが交互に襲ってきます・・。

今回ご呈示いただいたマクロで、お尋ねしたいことが数カ所あります。
教えていただけませんでしょうか。

>>>マクロの中のこの箇所

If R = "5A" Or R = "26A" Or R = "27A" Then
A = A + 1
End If

>>ここまで
(問い1)
配列(4×10)をセル上に置きますと、例えば、セル(5E)内にはAがあります。標記の>>If R = "5A">>の5Aとは、セル(5E)上では、「A」のみですが、「5A」でよろしいのでしょうか?以下 "26A" Or R = "27A"・・等々も同様のお尋ねになります。

>>>マクロの中のこの箇所

Set MyR = Range("A1:J4")

>>ここまで

(問い2)これは、4×10の配列での計算式だと思います。
私は、当初からのお尋ねでお示しした配列(4×10)は、実際は、1列上(A列)に、100とか、1000とかの配列を設定して、この魔法のようなマクロを使わせてもらいたいと考えております。
そこで、仮にA列に1×100の配列をしているとしたならば、
このマクロの部分を Set MyR = Range("A1:A100") と変えるだけでよろしいのでしょうか?

>>>以下の質問は、今回のマクロ全体についてのお尋ねです。>>>

(問い3)今回のマクロですと、配列中(1から39番まで)にあるAの数(13個)を自動的に数える箇所(関数?)はどこなのでしょうか?

(問い4)配列中にあるAの次にどの記号が何個来ているのかを探している箇所(関数?)はどこなのでしょうか?

まったくの素人に説明されるのは、大変ご苦労をおかけしていることだと思いますが、
どうか、ゴールまでお導きくださいますよう、手を合わせてお願いしています。よろしくお願いします。
Yahoo!知恵袋 4732日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
(問い1)
私には分りません・・・貴方が5A/26A/27Aと決められたからコードに入れただけです。
元のデータに単にAなど無いでしょう・・・(E5はAでは無いでしょう)

(問い2)
その通りです・・・固定範囲を示します
100が200になったり、変動することを見越して

Dim R As Range, MyR As Range, LstRow As Long
LstRow = Cells(Rows.Count, 10).End(xlUp).Row
Set MyR = Range(Cells(1, 1), Cells(LstRow, 1))
For Each R in MyR

にすると増減に追随します。

LstRowは最終行の意味
Set MyR・・・範囲を設定の意味です

(問い3)
A=A;+1
B=B+1
C=C+1
これです。算数と違って
左側が右の内容を入れる器の役割をしているのです。

つまり
5Aか26Aか27Aがあれば・・・
A=A+1

Aは単なる置き換えのような物・・・何回、ここを通るかによってカウントされるものです。


マクロのコードをかなり理解できたのでは?無いでしょうか。
次は
コードの一番上の
Subにカーソルを当て、F8をたたいて下さい。
コードの上に黄色い帯が、動き出します。
この動きでカウントが何回されたか・・・分ります。

A=
B=
C=

のところに何回通ったかで、カウントされています。
(この手法の考え方はあらゆるコンピュータ言語に反映されています。)

この行動を「ステップイン」というのですが、コードのエラー、誤動作の
確認やカウントが上手く働いているかを確かめるのにも役に立ちます

要はコードは英語のぶつ切れと置き換えの代名詞(自作の・・・LstRowも自作です
最後の(Lastを略し)行(Row)としているだけです)の組み合わせです。
Yahoo!知恵袋
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
62
Views
質問者が納得Alt+↓で、その列に入力してある項目を選択できますよ。 前提は、すでに○、×、△が列Aに入力済みであることです。 王道は、入力規則を使うがいいのでしょうけど、お手軽なのはこちらですね。 入力規則を使うと、新しい項目を追加するのが少し面倒なので、 ☆Altキーとカーソルキーの下を同時押しです。
4610日前view62
全般
78
Views
質問者が納得A100とかB200は1つのセルに入力しているのでしょうか。 足し合わせることを考えると、別のセルに入力しましょう。 Sheet1に元データ 1行目 A列1月・C列2月・・・ 2行目以降 A列記号・B列数値・C列記号・D列数値・・・ Sheet2で集計 B1に1月・C1に2月・・・ A2:A6にA・B・C・D・E B2セルに次式を入れて、縦横にコピーします。 =IF(COUNTIF(OFFSET(Sheet1!$A$2,,MATCH(B$1,Sheet1!$A$1:$X$1,0)-1,4),$A2),...
4612日前view78
全般
49
Views
質問者が納得作業列を利用すれば一般機能で十分可能です。 付図参照 B1=MID(A1,2,FIND(".",A1)-2) フィルハンドルをダブルクリック この列をキーに昇順ソートします。
4615日前view49
全般
61
Views
質問者が納得式を作る過程にて, テストをしやすくするため表記をかんたんにしてます ex. タイトル, 年月->エクセル標準のシリアル値, アイテム名 etc ◇表は画像の位置に置きましたので、実用には適宜、式のセル位置を変えて下さい ID,A6: =IF(ROW(A1)>COUNT($D$1:$H$1)*COUNTA($A$2:$A$3),"",OFFSET(A$2,ROUNDUP(ROW(A1)/COUNT($D$1:$H$1),0)-1,)) と入力し、↑A6の式を C6 ま...
4615日前view61
全般
43
Views
質問者が納得セルO1に「大根」、セルO2に「4月」と指定するとして、 P1=SUMIF(A2:A100,O1,OFFSET(A1,1,MATCH(O2,A1:E1)-1,100)) 上記でいかがでしょう? 1行目の4月、5月・・・とセルO2の「4月」は全角半角の間違いを防ぐために数字だけを入力するようにして、表示形式で「○月」とするのがいいと思います。
4629日前view43

取扱説明書・マニュアル

822view
http://fujifilm.jp/.../ff_a100_mn_j101.pdf
116 ページ5.56 MB
もっと見る

関連製品のQ&A