2
私はLua CSV http://lua-users.org/wiki/LuaCsv を使用したいのでハイフン「 - 」を使用するカラムの1つを分割する必要があります。 Data> Text to Columnsで手動で行うことができます。フルネームのセルを分割し、最初と姓の列を最後に追加するには、スクリプトで同じことを行うにはLuaが必要です。ハイフンでのLua - 分割CSVカラム
Before
Age,Name,Start,End,Length,Score
35,Bill-Smith,2.2.2017,2.4.2017,0.2.00,2056
After
Age,Name,Start,End,Length,Score,First,Surname
35,Bill-Smith,2.2.2017,2.4.2017,0.2.00,2056,Bill,Smith
これは使用するLuaのCSVパーサである:
function ParseCSVLine (line,sep)
local res = {}
local pos = 1
sep = sep or ','
while true do
local c = string.sub(line,pos,pos)
if (c == "") then break end
if (c == '"') then
-- quoted value (ignore separator within)
local txt = ""
repeat
local startp,endp = string.find(line,'^%b""',pos)
txt = txt..string.sub(line,startp+1,endp-1)
pos = endp + 1
c = string.sub(line,pos,pos)
if (c == '"') then txt = txt..'"' end
-- check first char AFTER quoted string, if it is another
-- quoted string without separator, then append it
-- this is the way to "escape" the quote char in a quote. example:
-- value1,"blub""blip""boing",value3 will result in blub"blip"boing for the middle
until (c ~= '"')
table.insert(res,txt)
assert(c == sep or c == "")
pos = pos + 1
else
-- no quotes used, just look for the first separator
local startp,endp = string.find(line,sep,pos)
if (startp) then
table.insert(res,string.sub(line,pos,startp-1))
pos = endp + 1
else
-- no separator found -> use rest of string and terminate
table.insert(res,string.sub(line,pos))
break
end
end
end
return res
end
どのような質問ですか? – Piglet
ピグレットは言った。あなたの問題/質問がここに何であるかははっきりしていません。 –
csvの名前文字列の中央に - が付いています。そのセルをハイフンで分割してテーブルの2つの新しいセルに追加するには、Luaが必要です。 https://support.office.com/en-us/article/Split-text-into-different-columns-with-the-Convert-Text-to-Columns-Wizard-30B14928-5550-41F5-97CA-7A3E9C363ED7 – LuaStart