Discofly

EXCEL VBA についての備忘録

セルから半角英数だけを抽出する方法

ユーザー定義関数を作る

Function 英数(r As Range) As String
Dim i As Long
For i = 1 To Len(r.Value)
If Mid(r.Value, i, 1) Like "[0-9,A-z,+,-]" Then 英数 = 英数 & Mid(r.Value, i, 1) Next i
End Function

=英数(A1) 

とすると半角英数だけ抽出できる。

 

ユーザー定義関数の作り方はwebで調べること

 

引用元

エクセルのセル内の英数字のみを抽出したいのですが教えてください。 -... - Yahoo!知恵袋

文字と数値が混ざったセルから、文字だけを抽出したいときの関数

文字と数値が混ざったセルから文字だけを抽出したい場合の関数についての記事。

 

やりたいことをパターン化する。

  1. 1文字目から順にみて、数値がでてきたらそれより手前だけを抽出。
  2. 数値だけを除去したいとき。

1の場合は、「エクセル技道場」様の26を参照のこと。

www2.odn.ne.jp

 

活用例

”-”(ハイフン)がある場合も対応し、前半にもASC関数をいれて計算結果も半角に変換した時の数式。

=LEFT(ASC(G43),MIN(FIND({0,1,2,3,4,5,6,7,8,9,"-"},ASC(G43)&"0123456789-"))-1)

 

2はまたの機会で、

フォルダ内の複数のCSVを結合する まとめる

Sub test()

'説明 指定フォルダ内のCSVをすべて結合して、保存するプロシージャ

CRFILE = ActiveWorkbook.Path & "\test.csv"  '1*
Dim obj As Object
Dim arg As String

arg = ActiveWorkbook.Path & "\downloads\*.csv "   '2*
Set obj = Nothing
Call Shell(Environ("ComSpec") & " /c copy /b " & arg & CRFILE)
End Sub

 

1*結合したCSVの保存先、ファイル名を指定 上記ではアクティブブックと同じディレクトリにtest.csvというファイル名で保存される

2* フォルダを指定 上記ではアクティブブックの保存されているディレクトリの"downloads"内のフォルダの全てのCSVが結合される

 

引用元 半角チルダ様

■複数CSVファイルのまとめ - 半角チルダ

英数字と全角日本語のデータから特定の種類だけを抽出する方法

エクセルの勉強部屋 様にてアドインを公開している。

kiyopon.sakura.ne.jp

 ▼アドインは下記リンク先より。

「数値_文字取出」ユーザー定義関数の説明

 

不等号を含む文字列に絡むCOUNTIFの不具合について

 

表1.範囲

f:id:discofly:20170217141626p:plain

 

表2.検索条件

f:id:discofly:20170217141746p:plain

=COUNTIF(表1,表2のA2~E2のどれか1つのセル)

とした場合、A2~E2のどのセルの場合も計算結果は "4"となる。

対処方法は下記の通り

 

前: =COUNTIF(表1,A2)

後: =COUNTIF(表1,"="&A2)

 

空白を含むデータの種類を数える数式

 

データ範囲に空白が含まれかつ空白を1種類として数える場合

 

=SUMPRODUCT((A3:A65<>"")/COUNTIF(A3:A65,A3:A65&""))+IF(COUNTBLANK(A3:A65)>0,1,0)

※データ範囲をA3:A65とした場合

 

データ範囲に空白が含まれかつ空白を1種類として数えない場合

 

=SUMPRODUCT((A3:A65<>"")/COUNTIF(A3:A65,A3:A65&""))

 

※+IF~ を消す。