mu2011のプロフィール
- ベストアンサー数
- 1910
- ベストアンサー率
- 38%
- お礼率
- 0%
- 登録日2004/12/08
- エクセルのCOUNTIF関数について
エクセルの集計で例えばCCOUNTIF関数を使って或る列の文字「山か川」の数を全て集計したい場合の計算式はどのようになりますか?宜しくお願いします。
- ベストアンサー
- Excel(エクセル)
- verseau
- 回答数4
- [VBA] InStrRevとLikeの組合せ
こちらの識者の方々にはいつもお世話になっています。 VBAの質問です。 環境は下記になります。 OS=windowsXP SP3 Office=Excel2003(11.8347.8403) SP3 先日、 http://okwave.jp/qa/q8321600.html で質問した内容なのですが、解決したと思ったらまだ未解決のため、再度質問いたします。 A列に住所のデータがあるのですが、形式がちょっと特殊で、 A1 千代田区千代田1-1-1-301千代田マンション1号棟 A2 千代田区千代田2-3-4 というな形になっています。(A1,A2はセル番地表示で、その文字列がセルにあるわけではありません) 並び順が、市名(区名)・町名・丁目・番地・号地・部屋番号・物件名となっています。 データの定義は、丁目・番地・号地・部屋番号については半角数字・市名(区名)・町名・物件名は数字やアルファベットを含むものであっても全角であることは担保されております。 戸建てであればいいのですが、集合住宅の場合、物件名と部屋番号が入れ替わってしまっています。 これを、できればA列には住所、B列には物件名・(全角スペース)・部屋番号とわけたいのです。 A B 1 千代田区千代田1-1-1 千代田マンション1号棟 301 2 千代田区千代田2-3-4 という内容で、ご回答いただいた Sub SplitAddresses() Dim i As Long, n As Integer, pos1 As Integer, pos2 As Integer, pos3 As Integer For i = 1 To Cells(Rows.Count, "a").End(xlUp).Row With Cells(i, "a") For n = 0 To 9 pos1 = InStrRev(.Value, n) If pos2 < pos1 Then pos2 = pos1 Next n Cells(i, "b").Value = Right$(.Value, Len(.Value) - pos2) .Value = Left$(.Value, pos2) pos2 = 0 pos3 = InStrRev(.Value, "-") If pos3 And Cells(i, "b").Value <> "" Then Cells(i, "b").Value = Cells(i, "b").Value & " " & Right$(.Value, Len(.Value) - pos3) .Value = Left$(.Value, pos3 - 1) End If End With Next i Columns("a:b").AutoFit End Sub というコードでうまくいくと思ったのですが、 千代田区千代田1-2-3-4F千代田マンション1号棟 千代田区千代田1-1-1-A千代田マンション1号棟 といったデータも存在し、For n = 0 To 9ではまかなえないことがわかりました。 (数字の部屋番号だけではなく、4FやAなど、アルファベットの部屋番号が存在するということです) 数字だけではなく、半角英数字を末尾から検査し、その文字列がある位置を割り出す必要があるのですが、InStrRev関数とLike演算子を組み合わせて、返り値をpos1に代入しようと思ったもののうまくいきません。 ひとまず、返り値の確認のため、下記のようなコードを書きましたが、 Cells(1, 2) = InStrRev(Cells(1, 1), Like "*[0-z]*") というコードは通らず、 Cells(1, 2) = InStrRev(Cells(1, 1), Cells(1, 1) Like "*[0-z]*") というコードは返り値が0になってしまいます。 上記のような場合、どのようなコードが適していますでしょうか。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- rihitomo
- 回答数10
- エクセルでシート数が増加する場合の串刺し計算
エクセルで串刺し計算をする場合、データ→統合等でできますが、ファイルによってシート数が毎日増加する場合でも一発で串刺し計算(合計)できるように、VBAでプログラムを組むにはどのうようにすればよいのでしょうか? なお、各シートのデータはすべて同じレイアウトで作成されているとします。 VBAでプログラムの記入例があれば、助かります。
- ベストアンサー
- Excel(エクセル)
- wakaran01
- 回答数3
- エクセルVBAで重複入力の排除
すでに入力規則はリストで使用しております。 そのためVBAで重複入力の排除を行おうと思います。 一応以下のコードでできたのですが、もっと良い方法があったら教えてください。 お願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myDic As Object Dim c As Variant, varData As Variant Dim i As Long If Application.Intersect(Target, Range("A1:A50")) Is Nothing Then Exit Sub Set myDic = CreateObject("Scripting.Dictionary") varData = Range("A1:A50").Value For Each c In varData If Not c = Empty Then i = i + 1 If Not myDic.Exists(c) Then myDic.Add c, Null End If End If Next If myDic.Count < i Then MsgBox Target & " は重複!" Application.EnableEvents = False Application.Undo Application.EnableEvents = True End If End Sub
- ベストアンサー
- Excel(エクセル)
- emaxemax
- 回答数1
- エクセルで、文中にキーワードの有無をチェック
エクセルの初心者です。 ひとつのセルに、100文字程度の文章を入力したとしますね。 その中に、特定のキーワードが含まれているかどうかを 検索するのは難しくないと思います。 しかし、例えば a1 に指定のキーワードを入力する b1に文章を入力する c1に、もしキーワードが含まれていれば◯を、含まれていなければ×を表示させる というような処理をさせたいとき、IF文とFINDなどを組み合わせればうまくいくのかな、などとおもったのですが、なかなかうまくいきません。 これは、マクロを組まなくてはいけないような処理なのでしょうか?
- ベストアンサー
- オフィス系ソフト
- y_hisakata
- 回答数3