mu2011のプロフィール

@mu2011 mu2011
ありがとう数4,397
質問数0
回答数6,845
ベストアンサー数
1910
ベストアンサー率
38%
お礼率
0%

  • 登録日2004/12/08
  • エクセルのCOUNTIF関数について

    エクセルの集計で例えばCCOUNTIF関数を使って或る列の文字「山か川」の数を全て集計したい場合の計算式はどのようになりますか?宜しくお願いします。

    • 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になってしまいます。 上記のような場合、どのようなコードが適していますでしょうか。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • エクセルでシート数が増加する場合の串刺し計算

    エクセルで串刺し計算をする場合、データ→統合等でできますが、ファイルによってシート数が毎日増加する場合でも一発で串刺し計算(合計)できるように、VBAでプログラムを組むにはどのうようにすればよいのでしょうか? なお、各シートのデータはすべて同じレイアウトで作成されているとします。 VBAでプログラムの記入例があれば、助かります。

  • エクセル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

  • エクセルで、文中にキーワードの有無をチェック

    エクセルの初心者です。 ひとつのセルに、100文字程度の文章を入力したとしますね。 その中に、特定のキーワードが含まれているかどうかを 検索するのは難しくないと思います。 しかし、例えば a1 に指定のキーワードを入力する b1に文章を入力する c1に、もしキーワードが含まれていれば◯を、含まれていなければ×を表示させる というような処理をさせたいとき、IF文とFINDなどを組み合わせればうまくいくのかな、などとおもったのですが、なかなかうまくいきません。 これは、マクロを組まなくてはいけないような処理なのでしょうか?